在Docker容器中运行的SQL Server 2017 Linux映像中,从.cer和.p7b创建证书
我已下载SQL Server 2017 Linux映像并在容器中运行。 接下来,我已从SQL Server Management Studio 2017连接到容器。 然后我使用“docker cp”将.bak文件复制到“/var/opt/mssql/backup” 但它需要一个加密密钥来恢复 因此,在SSMS中,我打开容器的查询窗口并运行以下命令:在Docker容器中运行的SQL Server 2017 Linux映像中,从.cer和.p7b创建证书,docker,encryption,sql-server-2017,Docker,Encryption,Sql Server 2017,我已下载SQL Server 2017 Linux映像并在容器中运行。 接下来,我已从SQL Server Management Studio 2017连接到容器。 然后我使用“docker cp”将.bak文件复制到“/var/opt/mssql/backup” 但它需要一个加密密钥来恢复 因此,在SSMS中,我打开容器的查询窗口并运行以下命令: USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd'; GO
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd';
GO
CREATE CERTIFICATE CertificateName FROM FILE = 'C:\cert.cer' WITH PRIVATE
KEY (FILE = 'C:\key.p7b', DECRYPTION BY PASSWORD = '********');
当我运行最后一个时,我得到以下错误:
证书、非对称密钥或私钥文件无效或不存在;或者您对其没有权限
如何为Docker容器执行此操作?
我可以从本地文件系统获取文件吗?
或者我需要将其复制到“/var/opt/mssql/”中,然后从中获取信息吗?Docker显然无法读取本地文件系统中的cer和关键文件。 以下是我所做的: 在命令提示下,在容器中创建一个dir来保存键
docker exec -it sqlcontainer1 mkdir /var/opt/mssql/setup
docker cp "C:\Temp\cert.cer" sqlcontainer1:/var/opt/mssql/setup
docker cp "C:\Temp\key.p7b" sqlcontainer1:/var/opt/mssql/setup
然后我回到SSMS并再次运行命令:
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '********';
GO
CREATE CERTIFICATE CertName FROM FILE = '/var/opt/mssql/setup/cert.cer' WITH
PRIVATE KEY (FILE = '/var/opt/mssql/setup/key.p7b', DECRYPTION BY PASSWORD =
'********');