Cra*_*ein 2 sql-server-2005 sql-server
我创建了一个带密码的证书
CREATE CERTIFICATE testcert
ENCRYPTION BY PASSWORD = 'test123'
WITH SUBJECT = 'Certificate for stored procedures using dynamic SQL',
START_DATE = '2010-01-01',
EXPIRY_DATE = '2100-01-01'
Run Code Online (Sandbox Code Playgroud)
然后我删除了私钥
ALTER CERTIFICATE testcert REMOVE PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)
最后,我尝试备份证书
BACKUP CERTIFICATE testcert TO FILE = 'd:\mssql\testcert.cer'
WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = 'S3creT!' ,
FILE = 'd:\mssql\testcert.pvk' ,
ENCRYPTION BY PASSWORD = 'test123' );
Run Code Online (Sandbox Code Playgroud)
我得到这个错误:
消息 15246,级别 16,状态 1,第 1 行无法转储证书“testcert”的私钥,因为找不到私钥。
自从我删除私钥以来,这似乎很正常。
第一个问题:使用上一篇文章中解释的方法,这是否意味着要备份证书我会使用这个语句?
BACKUP CERTIFICATE testcert TO FILE = 'd:\mssql\testcert.cer'
Run Code Online (Sandbox Code Playgroud)
第二个问题:您将如何将证书恢复到另一台服务器和数据库?
例子 :
CREATE CERTIFICATE testcert2
ENCRYPTION BY PASSWORD = 'test123',
FROM FILE = 'd:\mssql\testcert.cer'
WITH PRIVATE KEY ....
Run Code Online (Sandbox Code Playgroud)
谢谢。
当您为了移动证书而备份和恢复证书时,您不应该包含任何与私钥相关的条款。我在链接的帖子中解释了为什么私钥的价值主要来自它的唯一性,任何复制私钥的操作都会稀释其价值:
简单说一下,证书是一种“使用数字签名将公钥与身份绑定的电子文档”,正确的术语是公钥证书。换句话说,证书没有私钥。我自己很小心地说“证书和相关的私钥”。
备份和恢复证书和相关私钥可接受的少数操作是密钥托管 和用于恢复目的的备份(不是用于移动)。
现在,在这篇长篇论文之后,答案是:
BACKUP CERTIFICATE testcert TO FILE = 'd:\mssql\testcert.cer'
CREATE CERTIFICATE testcert2 FROM FILE = 'd:\mssql\testcert.cer'
归档时间: |
|
查看次数: |
313 次 |
最近记录: |