
サードパーティの証明機関から SSL 証明書を取得しました。これはファイルです.cer
。証明書は IIS7 にインストールされ、正常に動作しています。
証明書には、その使用目的として「サーバー認証」、「クライアント認証」が表示されます。
このサイトではクライアント証明書による認証が必要です。ないクライアント証明書マッピングを使用しますが、クライアント証明書を認証の手段として単純に使用します。つまり、クライアント証明書があれば、認証されます。
- クライアント証明書を作成するにはどうすればよいですか?
- CA は別の CSR を関与させてこれを実行する必要がありますか?
- これは別のツールを使って自分で実行できるものでしょうか? (OpenSSL またはその他)
- クライアント証明書にはどのような形式が必要ですか?
答え1
IIS(またはほとんどのHTTPD)でのクライアント証明書認証はやや複雑です。ユーザーを証明書にマッピングする必要があります。証明書自体は、サーバーが信頼する任意のCAによって発行できます。AD CSインスタンスをセットアップする証明書を発行したり、ローカルコピーを使用したりすることもできますオープンSSL必要に応じて証明書を作成します。
記事がありますIIS.net記述クライアント証明書のマッピング; これを有効にして、プログラムで証明書をユーザーに関連付ける方法についての情報が記載されています。
編集:
OpenSSL を使用してクライアント証明書を発行する超短縮バージョン。
openssl genrsa -des3 -out my_ca.key 4096
openssl req -new -key my_ca.key -out my_ca.csr
openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
これで、CA 証明書とキーが作成されました。- 生成するクライアント証明書ごとに、証明書署名要求が必要です。必要に応じて、すべてのユーザーに同じ証明書を使用できますが、これはあまり良い考えではありません。また、他の形式の認証 (パスワードなど) も必ず要求する必要があります。クライアントが CSR を自分で生成するか、openssl を使用して再度生成することができます (各 CSR には最初に秘密キーが必要であることに注意してください)。
openssl genrsa -des3 -out client1.key 1024
openssl req -new -key client1.key -out client1.csr
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
CA証明書を使用してキーに署名する
openssl ca -in client1.csr -out client1.crt
- クライアント用にキーと CSR を作成した場合は、それらをエクスポートする必要があります。証明書のペアを PKCS12 ファイルにエクスポートして、クライアントがインポートできるようにします。
openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
- 7 を完了した場合は、作成した PKCS12 ファイルをクライアントに送信します。それ以外の場合は、6 の証明書を送信します。
これは、CSR で指定されたタイプの証明書を単に付与するだけなので、署名付き証明書を発行する方法としては適切ではないことに注意してください。実行内容には十分注意してください。多数の証明書を発行する場合は、より安全な設定に時間をかける必要があります。