クライアントからサイトへの認証のセットアップ
VPN サーバーと VPN クライアントの認証設定を構成します。 証明書は IBM Cloud® Secrets Managerを介して管理されます。
IAM サービス間許可の作成
VPN サーバーと IBM Cloud Secrets Manager に対して IAM サービス間認証を作成するには、以下の手順に従います:
また、VPNサーバーのプロビジョニングページでIAMサービス間認可を設定するか、認可の編集サイドパネルを使用することもできます。
- IBM Cloud コンソールから、 Manage authorizations ページに移動し、 Create をクリックします。
- メニューから VPC Infrastructure Servicesを選択します。 次に、**「選択された属性に基づくリソース」**を選択します。
- 「リソース・タイプ」>**「Client VPN for VPC」**を選択します。
- 対象サービス Secrets Manager.
- 「すべてのリソース」 を選択したままにします。 次に、 SecretsReader チェック・ボックスを選択します。
- 「許可」 をクリックします。
VPN サーバー証明書と VPN クライアント証明書の管理
Secrets Manager への証明書のインポート
以下の手順では、 OpenVPN easy-rsa を使用して VPN サーバーとクライアントの証明書を生成し、これらの証明書を Secrets Manager にインポートします。 詳しくは、 Easy-RSA 3 Quickstart READMEを参照してください。
-
Easy-RSA 3 リポジトリーをローカル・フォルダーに複製します。
git clone https://github.com/OpenVPN/easy-rsa.git cd easy-rsa/easyrsa3
-
Public Key Infrastructure (PKI) と認証局 (CA) を作成します。
./easyrsa init-pki ./easyrsa build-ca nopass
CA 証明書がパス
./pki/ca.crt
に生成されていることを確認します。 次のセクション で説明するように、サーバ証明書またはクライアント証明書をSecrets Managerにインポートする場合、他の証明書に署名するために使用される証明書が中間証明書として必要になります。 -
VPNサーバー証明書を生成する:
./easyrsa build-server-full vpn-server.vpn.ibm.com nopass
VPN サーバーの公開鍵がパス
./pki/issued/vpn-server.vpn.ibm.com.crt
に生成されていることと、秘密鍵がパス./pki/private/vpn-server.vpn.ibm.com.key
に生成されていることを確認します。 -
VPNクライアント証明書を生成する:
./easyrsa build-client-full client1.vpn.ibm.com nopass
VPN クライアントの公開鍵がパス
./pki/issued/client1.vpn.ibm.com.crt
に生成されていることと、秘密鍵がパス./pki/private/client1.vpn.ibm.com.key
に生成されていることを確認します。 -
VPN クライアント証明書を追加で作成する必要がある場合は、ステップ 4 を繰り返します。
重要な考慮事項
-
上記の例では、VPN サーバー証明書と VPN クライアント証明書が同じ CA によって署名されています。 異なる CA を使用してクライアント証明書に署名するには、
easyrsa3
フォルダーを新しいパスにコピーして、ステップ 2 と 4 を行います。 -
他のCAから既にVPNサーバー証明書を取得している場合は、その証明書がExtended key usageを持っていることを確認してください:
TLS Web Client Authentication
. コマンドcat YOUR-CERTIFICATE-FILE | openssl x509 -noout -text
を使用して、エンコードされた証明書ファイルの内容に基づいて証明書情報を検査できます。 -
証明書がクライアントを認証するためのVPNクライアント証明書として使用される場合は、 証明書ファイルと中間証明書ファイルをアップロードする必要があります。 例えば、異なるクライアント証明書を使用して異なるユーザーを認証する場合は、これらの証明書が同じ CA によって署名されていること、およびクライアント証明書の 1 つ (証明書ファイル および 中間証明書ファイル のみ) を Secrets Managerにアップロードしたことを確認してください。
CA チェーンを使用して、証明書 (中間 CA 1、中間 CA 2、およびルート CA) を単一ファイルにバンドルし、中間証明書ファイルにアップロードすることができます。 また、 Secrets Managerに証明書をアップロードすることなく、同じ CA を使用して複数のクライアント証明書をオフラインで作成できることにも留意してください。
Secrets Manager への VPN サーバー証明書のインポート
VPN サーバー証明書を Secrets Manager にインポートするには、以下の手順に従います:
-
Secrets Manager インスタンスがまだない場合は、 Secrets Manager ページに移動します。 次に、情報を入力して Createをクリックし、 Secrets Manager インスタンスを作成します。
詳しくは、 Secrets Manager の証明書の注文を参照してください。
-
コンソールで、 ナビゲーション メニュー
> リソース リスト > セキュリティをクリックします。
-
サービスのリストから、 Secrets Manager のインスタンスを選択します。
-
**「シークレット」テーブルで、「追加」**をクリックします。
-
インポートされた証明書 」をクリックし、「 次へ 」をクリックします。
-
以下の手順に従って、証明書をインポートしてください:
- シークレットを容易に識別できる名前と説明を追加します。
- シークレットに割り当てるシークレット・グループを選択します。
- オプション: インスタンス内の類似シークレットを検索しやすくするためのラベルを追加します。
- オプション:あなたの秘密、またはあなたの秘密の特定のバージョンにメタデータを追加します。
- Next をクリックし、 Import a certificate タイルを選択します。
- **「参照」**をクリックし、証明書ファイルとして
./pki/issued/vpn-server.vpn.ibm.com.crt
を選択します。 - **「参照」**をクリックし、証明書の秘密鍵として
./pki/private/vpn-server.vpn.ibm.com.key
を選択します。 - **「参照」**をクリックし、中間証明書として
./pki/ca.crt
を選択します。 - 次へ をクリックします。
- 証明書の詳細を確認し、[ Add] をクリックします。
詳しくは、 既存の証明書のインポート を参照してください。
重要な考慮事項
-
この例では、VPNサーバー証明書とクライアント証明書は同じCAによって署名されているため、VPNサーバー証明書のみをアップロードする必要があります。 また、この証明書を VPN サーバー証明書として使用し、VPN クライアントを認証する必要もあります。 VPNサーバー証明書とクライアント証明書が異なるCAによって署名されている場合は、別々にアップロードする必要があります。
-
Secrets Manager で証明書を更新した場合、VPNサーバーは証明書の更新を認識しません。 別のCRNで証明書をインポートし直し、新しい証明書のCRNでVPNサーバーを更新する必要があります。
-
証明書をVPNサーバー証明書として使用する場合は、 証明書ファイル、 秘密鍵ファイル、 中間証明書ファイルをアップロードする必要があります。 証明書がクライアントを認証するためのVPNクライアント証明書として使用される場合は、 証明書ファイルと中間証明書ファイルをアップロードする必要があります。
CA チェーンを使用して、証明書 (中間 CA 1、中間 CA 2、およびルート CA) を単一ファイルにバンドルし、中間証明書ファイルにアップロードすることができます。
Secrets Manager を使用したパブリック証明書の注文
Secrets Manager、VPNサーバー証明書としてパブリックSSL/TLS証明書を注文できます。 公開 CA ルート証明書は Secrets Managerに保管されないため、 Secrets Manager は中間証明書のみを保管します。 .pem
ファイルとして保存されている Let's Encrypt のルート証明書が必要です。 必要な 2 つのファイルは、「 https://letsencrypt.org/certs/lets-encrypt-r3.pem 」および「 https://letsencrypt.org/certs/isrgrootx1.pem」にあります。
これらのファイルは便宜上連結されていますが、セキュリティ上の理由から、ご自身のルート証明書をダウンロードしてファイルに連結することをお勧めします。 また、VPN クライアント・プロファイルをダウンロードして更新する場合は、このルート証明書を使用して、クライアント・プロファイルの <ca>
セクションを置き換えます。
Let's Encrypt証明書チェーンの詳細については、以下を参照のこと。 https://letsencrypt.org/certificates/.
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----
注文した証明書はパブリック SSL /TLS 証明書であり、VPN サーバー証明書としてのみ使用する必要があります。 以下の理由により、注文した証明書を使用して VPN クライアントを認証することはできません。
- 誰でもパブリックCAに新しい証明書を注文することができる。 そのため、お客様がパブリック SSL /TLS 証明書を使用して VPN クライアントを認証する場合に、第三者が認証を渡してしまう可能性があります。
- パブリックCAのVPNクライアント証明書を失効させるために、証明書失効リスト(CRL)を作成することはできません。
VPNクライアントを認証するには、独自のCAを作成し、そのCA証明書を Secrets Manager。
プライベート証明書の使用
Secrets Manager プライベート証明書を VPN サーバーで使用できます。 これを行う際には、以下の重要な考慮事項を確認してください。
-
CA チェーン内のすべての CA は、 Secrets Manager インスタンスに含まれている必要があります。 また、 Secrets Manager内にルート CA を作成する必要があります。 中間 CA を選択する場合は、VPN サーバー内のプライベート証明書の CA チェーンが検証されている間にすべての CA を検出できるようにするために、以下のオプションが 必須 になります。
- 「タイプ」セクションで、 「内部署名」 を選択する必要があります。
- タイプセクションでは、エンドエンティティ証明書URL をエンコードするCAを作成する際には URL を有効にする必要があります。 CAを作成した後に URL を有効にしても動作しません。
-
プライベート証明書 CA チェーン内の CA の最大数は 11 (ルート CA と中間 CA の最大数は 10) です。
-
プライベート証明書の CA CRL を使用する場合は、「Certificate revocation list」セクションで、 CRL building スイッチと CRL distribution points スイッチの両方を使用可能にします。 取り消された証明書は、1 時間後にアプリケーションによって信頼されなくなります。
-
CA CRL は、VPN サーバーの作成時に証明書失効リストをアップロードしない場合にのみ機能します。 VPN サーバーの CRL が既にアップロードされている場合は、CA CRL を有効にする必要はありません。
-
中間 CA のテンプレートを作成するときに、「証明書の役割」セクションで以下を行います。
- 作成された CA が VPN サーバーのサーバー証明書に署名する場合は、 「サーバーに証明書を使用する」 チェック・ボックスを選択します。
- 作成された CA が VPN サーバーのクライアント証明書に署名する場合は、 「クライアントに証明書を使用する」 チェック・ボックスを選択します。
- 作成された CA が VPN サーバーのサーバー証明書とクライアント証明書の両方に署名する場合は、 「サーバーの証明書を使用する」 と 「クライアントの証明書を使用する」 の両方のチェック・ボックスを選択します。
-
Secrets Manager インスタンスでCAチェーンを作成する際には、CAごとに一意の共通名(CN) が設定されていることを確認してください。
詳しくは、 Secrets Manager 資料の プライベート証明書の作成 を参照してください。
証明書の CRN を見つける
UIを使用してプロビジョニング中にクライアント-サイト間VPNサーバーの認証を構成する場合、 Secrets Manager、SSL証明書、または証明書のCRNを指定することができます。 メニューに Secrets Manager が表示されない場合、つまり Secrets Manager インスタンスにアクセスできない場合は、このようにするとよいでしょう。 API を使用してクライアントとサイト間の VPN サーバーを作成する場合は、CRN を入力する必要があることに注意してください。
CRNを取得するには、 Secrets Manager インスタンスへのアクセス権限が必要です。
証明書の CRN を見つけるには、以下の手順を実行します。
- IBM Cloud コンソールで、 ナビゲーション メニュー アイコン
> リソース リスト** に移動します。
- Securityをクリックして展開し、CRNを見つけたい Secrets Manager。
- 証明書のテーブル行の任意の場所を選択して、「証明書の詳細」サイド・パネルを開きます。 サイド・パネルに証明書 CRN がリストされます。
ユーザー ID とパスコードの構成
VPN クライアント・ユーザーの認証を構成するには、以下の手順を実行します。
-
VPN 管理者は、VPN サーバーが存在するアカウントに VPN クライアントのユーザーを招待します。
-
VPN 管理者は、VPN クライアント・ユーザーに IAM 権限を割り当てます。 この権限は、このユーザーが VPN サーバーに接続することを許可するためのものです。 詳しくは、IAM アクセス・グループの作成および VPN サーバーに接続するための役割の付与を参照してください。
-
VPN クライアント・ユーザーは、以下の Web サイトを開いて、ユーザー ID のパスコードを生成します。
https://iam.cloud.ibm.com/identity/passcode
-
VPN クライアント・ユーザーは、openVPN クライアントでパスコードを入力し、VPN サーバーへの接続を開始します。 詳しくは、クライアント VPN 環境のセットアップと VPN サーバーへの接続を参照してください。