クライアント証明書の作成

クライアント証明書の作成

サードパーティの証明機関から SSL 証明書を取得しました。これはファイルです.cer。証明書は IIS7 にインストールされ、正常に動作しています。

証明書には、その使用目的として「サーバー認証」、「クライアント認証」が表示されます。

このサイトではクライアント証明書による認証が必要です。ないクライアント証明書マッピングを使用しますが、クライアント証明書を認証の手段として単純に使用します。つまり、クライアント証明書があれば、認証されます。

  • クライアント証明書を作成するにはどうすればよいですか?
  • CA は別の CSR を関与させてこれを実行する必要がありますか?
  • これは別のツールを使って自分で実行できるものでしょうか? (OpenSSL またはその他)
  • クライアント証明書にはどのような形式が必要ですか?

答え1

IIS(またはほとんどのHTTPD)でのクライアント証明書認証はやや複雑です。ユーザーを証明書にマッピングする必要があります。証明書自体は、サーバーが信頼する任意のCAによって発行できます。AD CSインスタンスをセットアップする証明書を発行したり、ローカルコピーを使用したりすることもできますオープンSSL必要に応じて証明書を作成します。

記事がありますIIS.net記述クライアント証明書のマッピング; これを有効にして、プログラムで証明書をユーザーに関連付ける方法についての情報が記載されています。

編集:
OpenSSL を使用してクライアント証明書を発行する超短縮バージョン。

  1. openssl genrsa -des3 -out my_ca.key 4096
  2. openssl req -new -key my_ca.key -out my_ca.csr
  3. openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
    これで、CA 証明書とキーが作成されました。
  4. 生成するクライアント証明書ごとに、証明書署名要求が必要です。必要に応じて、すべてのユーザーに同じ証明書を使用できますが、これはあまり良い考えではありません。また、他の形式の認証 (パスワードなど) も必ず要求する必要があります。クライアントが CSR を自分で生成するか、openssl を使用して再度生成することができます (各 CSR には最初に秘密キーが必要であることに注意してください)。
    openssl genrsa -des3 -out client1.key 1024
    openssl req -new -key client1.key -out client1.csr
  5. openssl.cnf ファイルを編集し、関連する CA 部分を入力します。これらは次のとおりです。

    [ ca ]
    default_ca      = CA_default            # The default ca section
    
    [ CA_default ]
    dir            = ./                    # top dir
    database       = $dir/my_ca.index      # index file.
    new_certs_dir  = $dir/newcerts         # new certs dir
    certificate    = $dir/my_ca.crt        # The CA cert
    serial         = $dir/my_ca.srl        # serial no file
    private_key    = $dir/my_ca.key        # CA private key
    RANDFILE       = $dir/rand             # random number file
    default_days   = 365                   # how long to certify for
    default_crl_days= 30                   # how long before next CRL
    default_md     = md5                   # md to use
    policy         = policy_any            # default policy
    email_in_dn    = no                    # Don't add the email into cert DN
    name_opt       = ca_default            # Subject name display option
    cert_opt       = ca_default            # Certificate display option
    copy_extensions = none                 # Don't copy extensions from request
    
    [ policy_any ]
    countryName            = supplied
    stateOrProvinceName    = optional
    organizationName       = optional
    organizationalUnitName = optional
    commonName             = supplied
    emailAddress           = optional
    
  6. CA証明書を使用してキーに署名する
    openssl ca -in client1.csr -out client1.crt

  7. クライアント用にキーと CSR を作成した場合は、それらをエクスポートする必要があります。証明書のペアを PKCS12 ファイルにエクスポートして、クライアントがインポートできるようにします。
    openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
  8. 7 を完了した場合は、作成した PKCS12 ファイルをクライアントに送信します。それ以外の場合は、6 の証明書を送信します。

これは、CSR で指定されたタイプの証明書を単に付与するだけなので、署名付き証明書を発行する方法としては適切ではないことに注意してください。実行内容には十分注意してください。多数の証明書を発行する場合は、より安全な設定に時間をかける必要があります。

関連情報