1

わかりました、ここに私の問題があります。DB マスター キー、証明書、および対称キーを使用して、SQL Server 2005 でデータ暗号化を行っています。秘密鍵を使用して証明書を復元できる必要があります。しかし、PRIVATE KEY を使用して CREATE CERTIFICATE を実行すると、証明書は DB に取り込まれますが、秘密鍵は表示されません。以下は、テストのために私が従う手順です。

データベース マスター キーを作成します。

 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '12345'

証明書を作成する

CREATE CERTIFICATE MyCert 
WITH SUBJECT = 'My First Certificate', 
EXPIRY_DATE = '1/1/2199';

MyCert で暗号化された対称キーを作成します。

CREATE SYMMETRIC KEY MySymmetricKey 
WITH ALGORITHM = AES_256 
ENCRYPTION BY CERTIFICATE MyCert

以下の select ステートメントを呼び出して、キーと証明書がそこにあることを示します。彼らです。マスター DB キー、対称キー、および証明書はすべてそこにあります。

SELECT * FROM sys.symmetric_keys 

SELECT * FROM sys.certificates 

データベース証明書とキーのバックアップを作成する

それらを同じフォルダーに入れてみましたが、どちらも機能しませんでした。

BACKUP CERTIFICATE MyCert TO FILE = 'C:\SQLDatabase\MyCert\MyCert.cert'
WITH PRIVATE KEY ( FILE = 'C:\SQLDatabase\MyKey\MySymmetricKey.key' ,
ENCRYPTION BY PASSWORD = '12345' )

キーと証明書をドロップし、それらがなくなっていることを確認します。

DROP SYMMETRIC KEY MySymmetricKey
DROP CERTIFICATE MyCert;

ファイルでのみ作成された証明書の復元はありません。WITH PRIVATE KEY を使用して create certificate を呼び出します。

これを実行すると、証明書が表示されますが、キーは付属していません。

それらがフォルダー内にあり、SQL がフォルダーにアクセスできることを確認しました。

ALTER CERTIFICATE WITH PRIVATE KEY も試しましたが、まだ何もしていません。

私は何が欠けていますか?

CREATE CERTIFICATE PayGoDBCert 
FROM FILE = 'C:\SQLDatabase\MyCert\MyCert.cert'
WITH PRIVATE KEY (FILE = 'C:\SQLDatabase\MyKey\MySymmetricKey.key' , 
DECRYPTION BY PASSWORD = '12345')

SELECT * FROM sys.symmetric_keys 
SELECT * FROM sys.certificates 
4

1 に答える 1

0

あなたの例では、対称キーを削除しますが、再度作成しないでください。

対称キーを再度作成し、証明書を復元します。

注意: バックアップされた証明書を保護するために使用されるパスワードは、証明書の秘密鍵を暗号化するために使用されるパスワードと同じではありません。

問題が解決したかどうかをお知らせください

于 2011-09-01T22:03:07.370 に答える