SSL / TLS 証明書のインポート
IBM Cloud® Secrets Manager を使って、アプリやサービスに使える SSL / TLS 証明書をインポートできます。
SSL/TLS 証明書は、サーバーとクライアントの間の通信プライバシーを確立するために使用されるデジタル証明書の一種です。 証明書は 認証局(CAデジタル証明書を発行する、信頼できるサード・パーティーの組織または企業。 一般に、認証局は、固有の証明書を付与された個人の ID を検証します。 )によって発行され、エンドポイント間の信頼できる安全な接続を作成するために使用される情報が含まれている。 Secrets Manager インスタンスに証明書を追加したら、その証明書を使用して、クラウドまたはオンプレミスのデプロイメントのネットワーク通信を保護できます。 証明書は、専用の Secrets Manager サービス・インスタンス内に安全に保管されます。このインスタンスでは、証明書のライフサイクルを一元管理できます。
Secrets Manager では、サービスにインポートする証明書はインポート証明書(imported_cert )です。 Secrets Manager、サードパーティの認証局に発注する証明書は パブリック証明書 (public_cert )です。プライベート認証局を使用して作成する証明書は、 プライベート証明書 (private_cert) です。
Secrets Manager で管理できる秘密の種類については、「 秘密とは何か 」を参照してください。
開始前に
開始する前に、必要なレベルのアクセス権限を持っていることを確認してください。 シークレットを作成または追加するには、ライター・サービス・ロールまたはそれ以上が必要です。
証明書をインポートする前に、以下のことを確認してください。
- 一致する秘密鍵を使用して X.509 準拠の証明書を作成します (オプション)。
- ファイルをPrivacy-enhanced electronic mail ( PEM ) フォーマットに変換します。
- 秘密鍵は、 Secrets Manager にインポートできるように、暗号化しないでおく。
既存の証明書のインポート
Secrets Manager を使用すると、外部の認証局によって署名、発行された証明書ファイルを保管できます。 証明書ファイルをインポートしてから、証明書をアプリおよびサービスにデプロイし、証明書をダウンロードするか、または更新時に手動ローテーション を実行します。
UI を使用した証明書のインポート
Secrets Manager UI を使用すると、既存の証明書をインポートできます。
-
コンソールで、**「メニュー」**アイコン
**>「リソース・リスト」**をクリックします。
-
サービスのリストから、Secrets Manager のインスタンスを選択します。
-
**「シークレット」テーブルで、「追加」**をクリックします。
-
次へ をクリックします。
-
シークレットを容易に識別できる名前と説明を追加します。
-
シークレットに割り当てるシークレット・グループを選択します。
シークレット・グループがありませんか。 「シークレット・グループ」フィールドで、「作成」 をクリックすると、新規グループの名前と説明を入力できます。 新しいグループにシークレットが自動的に追加されます。 シークレット・グループについて詳しくは、シークレットの編成をチェックしてください。
-
オプション: インスタンス内の類似シークレットを検索しやすくするためのラベルを追加します。
-
オプション: シークレットまたは特定のバージョンのシークレットにメタデータを追加します。
- ファイルをアップロードするか、メタデータとバージョン・メタデータを JSON 形式で入力します。
-
次へ をクリックします。
-
証明書のインポート] タイルを選択します。
-
証明書ファイルを選択するか、その値を入力します。
有効期限が切れていない PEM 形式の X.509 証明書ファイルを保管できます。 異なるフォーマットの証明書を使用している場合、コマンドライン・ユーティリティを使用して証明書を .pem に変換することができます。 詳しくは、「 なぜ証明書をインポートできないのですか?
- オプション: 秘密鍵ファイルを選択するか、その値を入力します。
秘密鍵を保管することにした場合は、証明書と一致することを確認してください。 証明書をサービスにインポートする前に、秘密鍵を暗号化されていない状態にしておく必要があります。
- オプション: 中間証明書ファイルを選択するか、その値を入力します。
- 次へ をクリックします。
- 証明書の詳細を確認します。
- 追加 をクリックします。
CLI を使用した証明書のインポート
始める前に、CLIのドキュメント に従ってAPIエンドポイントを設定してください。
Secrets Manager CLI プラグインを使用して証明書をインポートするには、ibmcloud secrets-manager secret-create コマンドを実行します。
例えば、以下のコマンドは、証明書をその秘密鍵と中間証明書と共にインポートします。
.pem形式の証明書ファイルをインポートできます。 Secrets Manager CLI によって正しく構文解析できるように、必ず PEM ファイルを単一行フォーマットに変換するようにしてください。
certificate=$(cat cert.pem)
private_key=$(cat key.pem)
ibmcloud secrets-manager secret-create --secret-name example-imported-cert-secret --secret-type imported_cert --imported-cert-certificate ${certificate} --imported-cert-private-key ${private_key}
このコマンドでは、シークレットの ID 値と他のメタデータが出力されます。 コマンド・オプションについては、ibmcloud secrets-manager secret-create を参照してください。
API を使用した証明書のインポート
Secrets Manager API を呼び出すと、証明書をプログラムでインポートできます。
既存の証明書をインポートするために使用できる照会の例を以下に示します。 API を呼び出す場合は、ID 変数と IAM トークンを、ご使用の Secrets Manager インスタンス固有の値で置き換えます。
custom_metadata および version_custom_metadata 要求パラメーターを使用して、組織のニーズに関連するメタデータを保管できます。 version_custom_metadata の値は、シークレットのバージョンについてのみ返されます。 シークレットのカスタム・メタデータは、最大 50 バージョンの他のすべてのメタデータとして保管されます。機密データを含めることはできません。
.pem形式の証明書ファイルをインポートできます。 Secrets Manager API によって正しく構文解析できるように、必ず PEM ファイルを単一行フォーマットに変換するようにしてください。
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "example-imported-certificate",
"description": "description of my imported certificate.",
"secret_type": "imported_cert",
"secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
"labels": [
"dev",
"us-south"
],
"certificate": "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
"intermediate": "-----BEGIN CERTIFICATE-----\nMIIE3DCCBGKgAwIBAgIUKncnp6BdSUKAFGBcP4YVp/gTb7gwCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAqcRbzV1wp0nVrPtEpMtnWMO6Js1q3rhREZluKZfu0Q8SY4H3\n-----END RSA PRIVATE KEY-----",
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"version_custom_metadata": {
"custom_version_key": "custom_version_value"
}
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
成功すると、シークレットの ID 値が他のメタデータとともに応答で返されます。 必須およびオプションのリクエスト・パラメータの詳細については、 秘密の作成を参照してください。
Terraform を使用した証明書のインポート
Secrets Managerの Terraform を使用して、証明書をプログラマチックにインポートできます。
既存の証明書をインポートするために使用できる照会の例を以下に示します。
resource "ibm_sm_imported_certificate" "sm_imported_certificate" {
instance_id = local.instance_id
region = local.region
name = "test-imported-certificate"
secret_group_id = "default"
certificate = file("path_to_certificate_file")
intermediate = file("path_to_intermediate_certificate_file")
private_key = file("path_to_private_key_file")
}
Terraform IBM Modules (TIM) for Secrets Manager Secret を使ってインポートされた証明書を効率的に管理し、宣言的なインフラ管理を行う。 Terraform IBM Modules の ドキュメントを確認する。
証明書署名要求の作成
インポートした証明書秘密を使って証明書署名要求(CSR)を生成し、それを認証局で外部署名してインポートした証明書秘密に戻すことができます。
インポートされた証明書の秘密鍵は、 事前アクティベーション状態として作成されます。 有効にするには、CSRファイルをダウンロードし、認証局で署名し、署名済みの証明書を新しい秘密バージョンとして追加する必要があります。
UIでの証明書署名要求の作成
Secrets Manager UI を使用して証明書署名要求を作成できる。
-
コンソールで、**「メニュー」**アイコン
**>「リソース・リスト」**をクリックします。
-
サービスのリストから、Secrets Manager のインスタンスを選択します。
-
**「シークレット」テーブルで、「追加」**をクリックします。
-
秘密の種類のリストから、 インポートされた証明書のタイルをクリックします。
-
次へ をクリックします。
-
シークレットを容易に識別できる名前と説明を追加します。
-
シークレットに割り当てる シークレットグループをインスタンス内に含まれているシークレットが準拠する必要のある環境と制約。 ユーザーをシークレット・グループに関連付けることで、アクセス権限とコラボレーションを有効にできます。 選択します。
シークレット・グループがありませんか。 「シークレット・グループ」フィールドで、「作成」 をクリックすると、新規グループの名前と説明を入力できます。 新しいグループにシークレットが自動的に追加されます。 シークレット・グループについて詳しくは、シークレットの編成をチェックしてください。
-
オプション: インスタンス内の類似シークレットを検索しやすくするためのラベルを追加します。
-
オプション: シークレットまたは特定のバージョンのシークレットにメタデータを追加します。
ファイルをアップロードするか、メタデータとバージョン・メタデータを JSON 形式で入力します。
-
次へ をクリックします。
-
証明書署名要求(CSR)の作成タイルを選択します。
-
コモンネームを追加する。
-
オプション:件名フィールドを追加する。
-
オプション: 主要なアルゴリズムを選択します。 選択されていない場合は、RSAがデフォルトとして使用されます。
-
オプション:証明書の役割を選択します。
-
次へ をクリックします。
-
証明書署名要求の詳細を確認してください。
-
追加 をクリックします。
UIで証明書署名要求を更新およびダウンロードする
-
更新したい秘密の行で、 [アクション] メニューの
>[ 詳細] をクリックします。
-
詳細ページで 、[管理されたCSR] タブを使用して証明書署名要求のフィールドを編集します。
コモンネームまたはサブジェクトの別名を更新する際は、証明書のサブジェクトの一貫性を維持するために、少なくともいずれか一方の名前は変更しないようにしてください。
-
「更新」をクリックします。
-
「Managed CSR」タブを開き 、「Download CSR」 をクリックして証明書署名要求ファイルをダウンロードします。
証明書署名要求ファイルを手元に用意したら、署名用証明書の発行元に連絡し、CSRファイルに署名して署名付き証明書を取得します。
署名済みの証明書をUIに再度追加する
「インポートされた証明書の管理されたCSRを手動でローテーションする 」で説明されているプロセスを使用して、 Secrets Manager インスタンスの秘密鍵に署名済み証明書ファイルを戻します。
API を使用した証明書署名要求の作成
Secrets Manager API を呼び出すことで、プログラム的に証明書署名要求を作成することができます。
API を呼び出す場合は、ID 変数と IAM トークンを、ご使用の Secrets Manager インスタンス固有の値で置き換えます。
custom_metadata および version_custom_metadata 要求パラメーターを使用して、組織のニーズに関連するメタデータを保管できます。 version_custom_metadata の値は、シークレットのバージョンについてのみ返されます。 シークレットのカスタム・メタデータは、最大 50 バージョンの他のすべてのメタデータとして保管されます。機密データを含めることはできません。
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "example-csr",
"description": "description of my csr.",
"secret_type": "imported_cert",
"secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
"labels": [
"dev",
"us-south"
],
"managed_csr": {
"require_cn": true,
"common_name": "example.com",
"ip_sans": "127.0.0.1",
"uri_sans": "https://www.example.com/test",
"other_sans": "2.5.4.5;UTF8:*.example.com",
"exclude_cn_from_sans": false
},
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"version_custom_metadata": {
"custom_version_key": "custom_version_value"
}
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
成功すると、シークレットの ID 値が他のメタデータとともに応答で返されます。 必須およびオプションのリクエスト・パラメータの詳細については、 秘密の作成を参照してください。
APIを使用して証明書署名要求を更新およびダウンロードする
Secrets Manager API を呼び出すことで、プログラム的に証明書署名要求を更新することができます。
API を呼び出す場合は、ID 変数と IAM トークンを、ご使用の Secrets Manager インスタンス固有の値で置き換えます。
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "example-csr",
"description": "description of my csr.",
"secret_type": "imported_cert",
"secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
"labels": [
"dev",
"us-south"
],
"managed_csr": {
"alt_names": "alt1"
}
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
成功すると、シークレットの ID 値が他のメタデータとともに応答で返されます。 必須およびオプションのリクエスト・パラメータの詳細については、 秘密の作成を参照してください。
APIで署名済み証明書を再度追加する
「インポートした証明書の手動ローテーション 」で説明されている手順を使用して、 Secrets Manager インスタンスの秘密鍵に署名付き証明書ファイルを戻します。
CLI からの証明書署名要求の作成
始める前に、CLIのドキュメント に従ってAPIエンドポイントを設定してください。
Secrets Manager CLI プラグインを使用して証明書署名要求を作成するには、コマンドを実行します。 ibmcloud secrets-manager secret-create コマンドを実行します。 例えば、次のコマンドは、 --imported-cert-managed-csr オプションを使用して、 common_name というフィールドを追加する証明書署名要求を作成します。 example.com。 サポートされているオプションの件名フィールドの一覧は 、 Secrets Manager のAPIドキュメント をご覧ください。
ibmcloud secrets-manager secret-create --secret-name example-imported-cert-csr-secret --secret-type imported_cert --imported-cert-managed-csr '{"common_name":"example.com"}'
CLIからの証明書署名要求の更新とダウンロード
始める前に、CLIのドキュメント に従ってAPIエンドポイントを設定してください。
Secrets Manager CLI プラグインを使用して証明書署名要求を更新するには、 ibmcloud secrets-manager secret-metadata-update コマンドを実行します。 例えば、次のコマンドは、 --imported-cert-managed-csr オプションで証明書署名要求を更新し、 alt_names というフィールドを追加します。 alt1。 サポートされているオプションの件名フィールドの一覧は 、 Secrets Manager のAPIドキュメント をご覧ください。
ibmcloud secrets-manager secret-metadata-update --id SECRET_ID --imported-cert-managed-csr '{"alt_names":"alt1"}'
Secrets Manager CLIプラグインを使用して証明書署名要求を取得するには、 ibmcloud secrets-manager secret-metadata コマンドを実行してください。
ibmcloud secrets-manager secret-metadata --id SECRET_ID
CLIから署名付き証明書を戻す
「インポートした証明書の手動ローテーション 」で説明されている手順を使用して、 Secrets Manager インスタンスの秘密鍵に署名付き証明書ファイルを戻します。