証明書について

背景

一般的に、Secure Socket Layer(SSL/X509)証明書は以下の用途で使用されます。

  • クライアントとサーバーとの間でセキュアな接続を確立する。例:
    • クライアント:ブラウザーまたはVPNクライアント
    • サーバー:<your-org>.okta.comまたはOkta RADIUSエージェント
  • 通信を暗号化して、機密情報を確実に保護する。
  • OrganizationのIDを認証する。

証明書の用途

証明書で拡張認証プロトコル/Tunneled Transport Layer Security(EAP/TTLS)または個人ID検証(PIV)スマートカードが使用される場合、証明書によってサブシステム(Okta RADIUSエージェントなど)の通信が保護されます。

証明書の発行者とタイプ

発行者の観点からは、次の3つの証明書タイプがあります。

  • 認証局(ルートCA)の証明書は、認証局(CA)が所有および管理する証明書です。CAはデジタル証明書を発行するエンティティーです。
  • 中間証明書は会社に付与されるか、会社から下位部門に付与されます。多くの場合、中間証明書は下位の中間証明書または最終証明書に署名するために使用されます。
  • エンティティー証明書は、個人が使用するために、個人または会社がいずれかの中間証明書から作成されます。

証明書チェーンの作成

証明書チェーンは証明書をグループ化したものです。Oktaでは、通常、すべての証明書チェーンをPrivacy Enhanced Mail(PEM)フォーマットにする必要があります。

証明書チェーンにより、エンティティーから信頼されたルートまで、すべての証明書が順番に連結されます。複数の中間証明書がある場合は、それらをチェーンに含める必要があります。

証明書は、エディターやコマンドラインツールを使用して証明書チェーンに結合できます。たとえば、Linuxでエンティティー証明書、中間証明書、エンティティーの秘密鍵を連結するには、次のようにします。

cat entity.pem intermediate.pem entity-primarykey.pem > certificate-chain.pem

連結すると、証明書のグループは次のようになります。

-----BEGIN CERTIFICATE----- ....(エンティティ証明書の内容) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- .... (中間証明書の内容) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- .... (信頼できるルート証明書の内容(任意。自己署名チェーンの場合のみ必要)) -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- ....(エンティティ秘密鍵の内容) -----END RSA PRIVATE KEY-----

各証明書を含むチェーンを作成する必要があります。そのチェーンには、最初にすべての中間証明書を含め、続いてエンティティー証明書を含めますが、信頼できるCAルート証明書は除外します。ルート証明書が必要なのは、自己署名証明書チェーンを使用する場合のみです。EAP-TTLSまたはEAP-GTCの場合、エンティティーの秘密鍵も含めます。

証明書フォーマットの変換

別のフォーマットの証明書を受信または生成した場合、連結してアップロードする前にPEMに変換する必要がある場合があります。opensslのようなツールを使用すると、証明書をある形式から別の形式に変換できます。

以下の例で、さまざまなフォーマットを.PEMに変換する方法を示します。

CRTからPEM

openssl x509 -in cert.crt -outform PEM -out cert.pem

CERからPEM

openssl x509 -in cert.cer -outform DER -out cert.pem

さらに、EAP-TTLSおよびEAP-GTCプロトコルはpfxおよびp12形式をサポートしています。これらを使うと、パスワードを指定して関連する秘密鍵を保護できます。

PFXに変換

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt

P12に変換するサンプルコマンド

openssl pkcs12 -export -out certificate.p12 -inkey privateKey.key -in certificate.crt

ほかにも複数の入力と変換のオプションがあります。詳細については、opensslのドキュメントとopensslのmanページを参照してください。