BACKUP CERTIFICATE (Transact-SQL)

適用対象: SQL Server (サポートされているすべてのバージョン) Analytics Platform System (PDW)

証明書をファイルにエクスポートします。

注意

SQL Server 2022 (16.x) では、公開キー ペア (PKCS) #12 または個人情報交換 (PFX) 形式を使って、ファイルまたはバイナリ BLOB との間で直接、秘密キーを含む証明書をバックアップまたは復元できます。

PKCS #12 または PFX 形式は、サーバー証明書、中間証明書、秘密キーを 1 つのファイルに格納するためのバイナリ形式です。 通常、PFX ファイルには .pfx.p12 のような拡張子が付きます。 これにより、お客様は (PVK または DER 形式に対する) PVKConverter などの変換ツールを使用する必要がなくなるため、RC4 暗号化を禁止する最新のセキュリティ上のベスト プラクティス ガイドラインとコンプライアンス標準に準拠しやすくなります。

リンク アイコンTransact-SQL 構文表記規則

構文

-- Syntax for SQL Server  
  
BACKUP CERTIFICATE certname TO FILE = 'path_to_file'  
    [ WITH
      [FORMAT = 'PFX',]
      PRIVATE KEY   
      (   
        FILE = 'path_to_private_key_file' ,  
        ENCRYPTION BY PASSWORD = 'encryption_password'   
        [ , DECRYPTION BY PASSWORD = 'decryption_password' ]   
      )   
    ]  
-- Syntax for Parallel Data Warehouse  
  
BACKUP CERTIFICATE certname TO FILE ='path_to_file'  
      WITH PRIVATE KEY   
      (   
        FILE ='path_to_private_key_file',  
        ENCRYPTION BY PASSWORD ='encryption_password'   
      )   

Note

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

certname
バックアップする証明書の名前です。

TO FILE = 'path_to_file'
証明書を保存するファイルの完全なパスを、ファイル名を含めて指定します。 このパスには、ローカル パスまたはネットワーク上の場所を示す UNC パスを指定できます。 ファイル名のみを指定すると、ファイルがインスタンスの既定のユーザー データ フォルダー (SQL Server DATA フォルダーであるかどうかは問いません) に保存されます。 SQL Server Express LocalDB の場合、インスタンスの既定のユーザー データ フォルダーは、インスタンスを作成したアカウントの %USERPROFILE% 環境変数で指定されたパスです。

WITH FORMAT = 'PFX'
適用対象: SQL Server 2022 (16.x) 以降
証明書とその秘密キーを PFX ファイルにエクスポートすることを指定します。 この句は省略可能です。

WITH PRIVATE KEY は、証明書の秘密キーをファイルに保存するように指定します。 この句は省略可能です。

FILE = 'path_to_private_key_file'
秘密キーを保存するファイルの完全なパスを、ファイル名を含めて指定します。 このパスには、ローカル パスまたはネットワーク上の場所を示す UNC パスを指定できます。 ファイル名のみを指定すると、ファイルがインスタンスの既定のユーザー データ フォルダー (SQL Server DATA フォルダーであるかどうかは問いません) に保存されます。 SQL Server Express LocalDB の場合、インスタンスの既定のユーザー データ フォルダーは、インスタンスを作成したアカウントの %USERPROFILE% 環境変数で指定されたパスです。

ENCRYPTION BY PASSWORD = 'encryption_password'
バックアップ ファイルに秘密キーを書き込む前に、キーを暗号化するため使用するパスワードを指定します。 パスワードに対しては、複雑性がチェックされます。

DECRYPTION BY PASSWORD = 'decryption_password'
秘密キーをバックアップする前に、秘密キーの暗号化を解除するため使用するパスワードを指定します。 証明書がマスター キーによって暗号化されている場合、この引数は必要ありません。

解説

データベースで秘密キーがパスワードによって暗号化されている場合は、暗号化解除パスワードを指定する必要があります。

秘密キーをファイルにバックアップする場合は、暗号化が必要です。 ファイル内の秘密キーの保護に使用するパスワードは、データベースで証明書の秘密キーの暗号化に使用するパスワードとは異なります。

秘密キーは、PVK ファイル形式で保存されます。

秘密キーを使用するかどうかにかかわらず、バックアップした証明書を復元するには、CREATE CERTIFICATE ステートメントを使用します。

データベース内の既存の証明書に秘密キーを復元するには、ALTER CERTIFICATE ステートメントを使用します。

バックアップを実行すると、ファイルは SQL Server インスタンスのサービス アカウントに対して ACL されます。 別のアカウントで実行しているサーバーに証明書を復元する必要がある場合は、ファイルに対するアクセス許可を調整して、新しいアカウントでファイルの読み取りを実行できるようにする必要があります。

アクセス許可

証明書に対する CONTROL 権限と、秘密キーの暗号化に使用するパスワードの情報が必要です。 証明書のパブリックの部分だけをバックアップする場合、このコマンドには証明書に対する権限の一部が必要です。また、呼び出し元に対して証明書の VIEW 権限が拒否されていないことも必要になります。

A. 証明書をファイルにエクスポートする

次の例では、証明書をファイルにエクスポートします。

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert';  
GO  

B. 証明書と秘密キーをエクスポートする

次の例では、バックアップする証明書の秘密キーをパスワード 997jkhUbhk$w4ez0876hKHJH5gh で暗号化します。

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert'  
    WITH PRIVATE KEY ( FILE = 'c:\storedkeys\sales05key' ,   
    ENCRYPTION BY PASSWORD = '997jkhUbhk$w4ez0876hKHJH5gh' );  
GO  

C. 秘密キーが暗号化されている証明書をエクスポートする

次の例では、データベースで証明書の秘密キーが暗号化されています。 この秘密キーは、パスワード 9875t6#6rfid7vble7r を使って暗号化を解除する必要があります。 証明書をバックアップ ファイルに保存するときには、秘密キーをパスワード 9n34khUbhk$w4ecJH5gh で暗号化します。

BACKUP CERTIFICATE sales09 TO FILE = 'c:\storedcerts\sales09cert'   
    WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = '9875t6#6rfid7vble7r' ,  
    FILE = 'c:\storedkeys\sales09key' ,   
    ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh' );  
GO  

D. 証明書とその秘密キーを PFX ファイルにエクスポートする

BACKUP CERTIFICATE Shipping04 TO FILE = 'c:\storedcerts\shipping04cert.pfx'
WITH  
    FORMAT = 'PFX',  
    PRIVATE KEY ( 
ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh',  
ALGORITHM = 'AES_256'
    )

関連項目

CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)