ALTER CERTIFICATE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)

証明書の秘密キーの暗号化に使用するパスワードを変更したり、秘密キーを削除したり、秘密キーが存在しない場合はインポートします。 Service Broker に対して、証明書を使用できるようにするかどうかを変更します。

Transact-SQL 構文表記規則

構文

-- Syntax for SQL Server and Azure SQL Database  
  
ALTER CERTIFICATE certificate_name   
      REMOVE PRIVATE KEY  
    | WITH PRIVATE KEY ( <private_key_spec> )  
    | WITH ACTIVE FOR BEGIN_DIALOG = { ON | OFF }  
  
<private_key_spec> ::=   
      {   
        { FILE = 'path_to_private_key' | BINARY = private_key_bits }  
         [ , DECRYPTION BY PASSWORD = 'current_password' ]  
         [ , ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
    |  
      {  
         [ DECRYPTION BY PASSWORD = 'current_password' ]  
         [ [ , ] ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
-- Syntax for Parallel Data Warehouse  
  
ALTER CERTIFICATE certificate_name   
{  
      REMOVE PRIVATE KEY  
    | WITH PRIVATE KEY (   
        FILE = '<path_to_private_key>',  
        DECRYPTION BY PASSWORD = '<key password>' )
}  

Note

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

引数

certificate_name
データベースに認識される証明書の一意な名前を指定します。

REMOVE PRIVATE KEY
秘密キーをデータベース内で保持しないよう指定します。

WITH PRIVATE KEY は、証明書の秘密キーを SQL Server に読み込むように指定します。

FILE ='path_to_private_key'
秘密キーへの完全なパスを、ファイル名を含めて指定します。 このパラメーターには、ローカル パスまたはネットワーク上の場所を示す UNC パスを指定できます。 このファイルには、SQL Server サービス アカウントのセキュリティ コンテキストでアクセスします。 このオプションを使用する場合は、サービス アカウントに指定したファイルへのアクセス権があることを確認します。

ファイル名だけを指定した場合、そのファイルがインスタンスの既定のユーザー データ フォルダーに保存されます。 このフォルダーは、SQL Server DATA フォルダーであってもなくても構いません。 SQL Server Express LocalDB の場合、インスタンスの既定のユーザー データ フォルダーは、インスタンスを作成したアカウントの %USERPROFILE% 環境変数で指定されたパスです。

BINARY ='private_key_bits'
適用対象: SQL Server 2012 (11.x) 以降。

バイナリ定数として指定された秘密キーのビット。 これらのビットは暗号化された形式でもかまいません。 暗号化されている場合は、ユーザーは暗号化解除パスワードを指定する必要があります。 パスワード ポリシーのチェックは、このパスワードに対しては実行されません。 秘密キーのビットは PVK ファイル形式にする必要があります。

DECRYPTION BY PASSWORD ='current_password'
秘密キーの暗号化解除に必要なパスワードを指定します。

ENCRYPTION BY PASSWORD ='new_password'
データベース内の証明書の秘密キーを暗号化するために使用されるパスワードを指定します。 new_password は、SQL Server のインスタンスを実行するコンピューターの Windows のパスワード ポリシー要件を満たす必要があります。 詳細については、「 Password Policy」をご参照ください。

ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Service Broker メッセージ交換の発信側で証明書を使用できるようにします。

解説

秘密キーは、certificate_name で指定する公開キーに対応している必要があります。

DECRYPTION BY PASSWORD 句は、ファイル内のパスワードが NULL パスワードで保護されている場合は省略できます。

データベースに既に存在する証明書の秘密キーをインポートするとき、その秘密キーはデータベース マスター キーにより自動的に保護されます。 秘密キーをパスワードで保護するには、ENCRYPTION BY PASSWORD 句を使用します。

REMOVE PRIVATE KEY オプションを指定すると、データベースから証明書の秘密キーが削除されます。 署名の確認に証明書が使用される場合、または秘密キーを必要としない Service Broker シナリオの場合は、秘密キーを削除できます。 対称キーを保護する証明書の秘密キーを削除しないでください。 秘密キーは、証明書を使用して検証する必要がある追加のモジュールまたは文字列に署名するため、または証明書を使用して暗号化されている値を暗号化解除するため、復元される必要があります。

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

秘密キーの暗号化に使用するパスワードを変更するには、FILE 句と BINARY 句のいずれも指定しないでください。

重要

データベースから秘密キーを削除する前には、必ず秘密キーの保存用コピーを作成してください。 詳細については、「BACKUP CERTIFICATE (Transact-SQL)」と「CERTPRIVATEKEY (Transact-SQL)」を参照してください。

WITH PRIVATE KEY オプションは、包含データベースでは使用できません。

アクセス許可

証明書に対する ALTER 権限が必要です。

A. 証明書の秘密キーを削除する

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. 秘密キーの暗号化に使用するパスワードを変更する

ALTER CERTIFICATE Shipping11   
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = '95hkjdskghFDGGG4%',  
    ENCRYPTION BY PASSWORD = '34958tosdgfkh##38');  
GO  

C. データベースに存在する証明書の秘密キーをインポートする

ALTER CERTIFICATE Shipping13   
    WITH PRIVATE KEY (FILE = 'c:\importedkeys\Shipping13',  
    DECRYPTION BY PASSWORD = 'GDFLKl8^^GGG4000%');  
GO  

D. 秘密キーの保護をパスワードからデータベース マスター キーに変更する

ALTER CERTIFICATE Shipping15   
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = '95hk000eEnvjkjy#F%');  
GO  

参照

CREATE CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
暗号化階層
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)