証明書について

背景

一般的に、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-----

各証明書が含まれるチェーンを作成します。エンティティ証明書から開始して、必要に応じて中間証明書、ルート証明書を順に作成します。各証明書は、その前の証明書を直接認定する必要があります。ルート証明書が求められるのは、自己署名証明書チェーンを使用する場合のみです。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ページを参照してください。