TLS/SSL3.0を有効にする場合に、クライアント認証も含めるためのCSR生成方法

2017年2月24日

ニュースソース:Cloudera Documentation

以下の文章は、2017年2月15日に公開されたTLS/SSL Certificates Overviewの「Requirements for TLS/SSL Certificates」を要約したものです。


TLS/SSL3.0を有効にする場合、Cloudera Manager AgentsはCloudera Manager Serverに対して自分を証明することが必要になります。
エージェントが使用する証明書は、クライアント認証とサーバー認証の両方のフラグを持っている必要があります。
証明書認証局(Certificate Authorities(CA))では一般的に、デフォルトでサーバー認証のみを有効にしています。
CAから発行される証明書を、自分がCloudera Managerサーバのクライアントであることをエージェントに証明するための証明書として利用できるよう、CAへの証明書署名要求certificate-signing request(CSR)を生成する段階で、拡張鍵(extended key usage)のオプションを含める必要があります。

TLSウェブクライアント認証のフラグセットによって証明書を生成する方法の概要は以下の通りです。

OpenSSLを使用する場合

  1. デフォルトのopenssl.cnfファイルのコピーをローカルに作成します。
    openssl.cnfは大抵/etc/pki/tls/openssl.cnfにあります(OSによって異なります)。
  2. 作成したファイルの最後に拡張鍵用途オプションなどのコードを追加します。
    [ cloudera_req ]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth, clientAuth
    
  3. 証明書署名要求(CSR)を行うためのコマンドを実行します。
  4. openssl reqコマンドを実行し、CSRにX509v3に準拠した拡張鍵用途フィールドのオプションが設定されているかを確認します。

Keytoolを使用する場合

  1. 証明書署名要求(CSR)を行う際、以下の例のようにKeytoolコマンドにオプションの-ext EKU=serverAuth,clientAuthを追加します。
    $ keytool -certreq -alias hostname  \
    -keystore /opt/cloudera/security/jks/hostname-keystore.jks  \ 
    -file /opt/cloudera/security/x509/hostname.csr  \
    -ext EKU=serverAuth,clientAuth  \ 
    -storepass password -keypass password
    
  2. keytool -certreq コマンドを実行し、CSRに拡張鍵用途(ExtendedKeyUsages)セクションで拡張鍵用途オプションが設定されているかを確認します。