DataLife Engine / How to renew database mirroring certificates SQL Server AlwaysON on Linux

How to renew database mirroring certificates SQL Server AlwaysON on Linux


I found next message in error log file /var/opt/mssql/log/errorlog:
Database Mirroring login attempt failed with error: 'Connection handshake failed. The certificate used by this endpoint was not found: Certificate expired.

For resolution this problem you should recreate certificates on primary and replica databases.

On primary server

1. Show current certificates
select name,expiry_date,* from sys.certificates

2. Show endpoints
select * from sys.endpoints
select name,type_desc,port, * FROM sys.tcp_endpoints

3. Create and export a new certificate
CREATE CERTIFICATE alwayson
    WITH SUBJECT = 'Always On Encryption Certificate',
         EXPIRY_DATE = '2099-12-31';

BACKUP CERTIFICATE alwayson
   TO FILE = '/var/opt/mssql/data/alwayson_certificate.cer'
   WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/alwayson_certificate.pvk',
           ENCRYPTION BY PASSWORD = 'P@$$w0rd'
        );

4. Move a new certificate to replica server via ssh:
cd /var/opt/mssql/data
scp alwayson.* root@<node2>:/var/opt/mssql/data/


On replica server

1. Change permissions of cert files:
cd /var/opt/mssql/data
chown mssql:mssql alwayson.*

2. Import a new certificate in database
CREATE CERTIFICATE alwayson
    FROM FILE = '/var/opt/mssql/data/alwayson_certificate.cer'
    WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/alwayson_certificate.pvk',
           DECRYPTION BY PASSWORD = 'P@$$w0rd'
        );

On both sides

ALTER ENDPOINT [Hadr_endpoint]
FOR DATABASE_MIRRORING (
    AUTHENTICATION = CERTIFICATE alwayson
);
29-07-2026, 22:50
Вернуться назад