Cha*_*yah 5 sql-server linux certificate docker sql-server-2017
Docker SQL Server 2017 容器 @latest。使用master
数据库。
我面临的错误如下:
[S00019][15208] The certificate, asymmetric key, or private key file is not valid or does not exist; or you do not have permissions for it.
我发现最接近这个确切问题的是Stackoverflow 上的这个问题。然而,答案对我不起作用。这个问题有类似的答案。
所以通过错误的部分:
无论我尝试什么,我都无法获得要恢复的证书。我已经搜索了GitHub 问题无济于事,所以我不认为这是一个错误。我一定做错了什么。
相关代码:
--on Prod
BACKUP CERTIFICATE sqlserver_backup_cert
TO FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.cer'
WITH PRIVATE KEY (
FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.key',
ENCRYPTION BY PASSWORD = 'foobar'
)
Run Code Online (Sandbox Code Playgroud)
--on Test
CREATE CERTIFICATE sqlserver_backup_cert
FROM FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.crt'
WITH PRIVATE KEY (
FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.key',
DECRYPTION BY PASSWORD = 'foobar'
)
Run Code Online (Sandbox Code Playgroud)
值得注意的/var/opt/mssql/certs
是一个Docker卷。但是,我也尝试在容器内创建自己的目录并使用docker cp
. 没变。
“相关代码:”(在问题中)下显示的代码是否是正在执行的确切代码,如复制并粘贴到此处而不是重新键入?我问这个问题是因为sqlserver_backup_cert文件上的文件扩展名在BACKUP
和CREATE
(即恢复)语句之间不同。它备份为.cer,但您正在寻找.crtCREATE
。
另外,您是否尝试过完全跳过文件并使用十六进制字节(即VARBINARY
文字)?您将执行以下操作:
在产品上
SELECT CERTENCODED(CERT_ID(N'sqlserver_backup_cert')) AS [CertificateAndPublicKey],
CERTPRIVATEKEY(CERT_ID(N'PrivateKeyTest'),
'new_password_for_extract(A)',
'current_password(B)') AS [PrivateKey];
Run Code Online (Sandbox Code Playgroud)
测试中
CREATE CERTIFICATE [sqlserver_backup_cert]
FROM BINARY = {output of CERTENCODED}
WITH PRIVATE KEY (
BINARY = {output of CERTPRIVATEKEY},
DECRYPTION BY PASSWORD = 'new_password_for_extract(A)',
ENCRYPTION BY PASSWORD = 'current_password(B)'
);
Run Code Online (Sandbox Code Playgroud)
更新
OP 已确认问题确实是文件扩展名不匹配。
归档时间: |
|
查看次数: |
225 次 |
最近记录: |