Search code examples
certificaterepositoryx509certificatevisualsvn-servervisualsvn

Switch to Certificated-based authentication for importing VisualSVN repository seed (`Access is denied`)


I have a master 'VisualSVN server`. It contains tens of repositories with many revisions.

In order to have a replication, I have configured a Slave Server.

Currently I can create new Slave VDFS repositories and make them in sync with Master Server with no issues and all configuration to allow Slave partner to connect to Master server using a self-signed certificate is done properly.

Since number of repositories is not small, so I tried to use method described in Deploying VDFS slave repositories using replication seeds.

All the process goes well until I tried to import repository to master server and Master server says: Access is denied. As I already mentioned, I can connect to Master server using certificate that I generated but for Importing repository there are not options to tell the VisualSVN Server to authenticate the Slave Server by certificate. I saw this in the master server event logs:

enter image description here

It said that Active Directory authentication method is used while I should use Certificate for authentication.

I tried to do this using VisualSVN PowerShell Import-SvnRepository Command however it also failed as well and here is the log:

PS E:\Repositories> Import-SvnRepository D:\Temp\Repo1\Repo1 -DestinationName Repo1 -Verbose
VERBOSE: Running the following operation: CIM method Import on the ROOT\VisualSVN\PS_SvnRepository CIM object.
Import-SvnRepository : Failed to access the remote VDFS service
The remote procedure call failed: Access is denied.
At line:1 char:1
+ Import-SvnRepository D:\Temp\Repo1\Repo1 -DestinationNa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (PS_SvnRepository:ROOT\VisualSVN\PS_SvnRepository) [Import-SvnRepository],
    CimException
    + FullyQualifiedErrorId : HRESULT 0x80041001,Import-SvnRepository

The help for this command is as below:

enter image description here

The question is how can I enforce Certifcate-Based authentication for Importing the repository from the repository seed?


Solution

  • Unfortunately, the current version of the VisualSVN Server Manager console doesn't let you import a replication seed that has to connect to master using certificate-based authentication. So you need to modify the replication settings of the replication seed before importing it.

    Export a replication seed and then modify its /db/vdfs.conf file. You can also use the /db/vdfs.conf file from your other working slave repositories as an example.

    vdfs.conf:

    [general]
    role = slave
    master-hostname = MASTER-SERVER-HOSTNAME
    master-path = MASTER-REPOSITORY-NAME
    
    [authentication]
    type = schannel
    mutual = yes
    

    Change mutual to no if you don't want to use mutual authentication by certificates.

    After you modify /db/vdfs.conf of the replication seed, try importing it again.