毎回どうやるんだっけ、となっているので、
オレオレ認証局でのクライアント証明書の作り方です。
- CentOS 6系で実施
事前準備
認証局のディレクトリを作成
1 2 |
mkdir /etc/pki/caCrt |
設定ファイルの準備
共通
/etc/pki/tls/openssl.cnfをコピー
以下の3ファイルを作成し、「/etc/pki/caCrt」に配置する
- openssl-ca.cnf
- openssl-server.cnf
- openssl-client.cnf
すべてのファイルに以下の修正を加える
1 2 3 4 5 6 7 |
[ CA_default ] dir = /etc/pki/caCrt default_days = 3650 [ req ] default_bits = 2048 default_md = sha256 |
それぞれのファイルを修正する
1 2 3 4 5 |
■openssl-ca.cnf [ usr_cert ] basicConstraints = CA:TRUE nsCertType = client, email |
1 2 3 4 5 |
■openssl-server.cnf [ usr_cert ] basicConstraints = CA:FALSE nsCertType = server |
1 2 3 4 5 |
■openssl-client.cnf [ usr_cert ] basicConstraints = CA:FALSE nsCertType = client, email, objsign |
認証局の作成
ディレクトリ整備
1 2 3 4 5 6 7 8 9 |
$ cd /etc/pki/caCrt $ mkdir certs $ mkdir crl $ mkdir newcerts $ mkdir private $ touch index.txt $ touch serial $ echo "01" > serial |
以下を実行し、認証局の秘密鍵を生成する。
1 2 |
$ openssl req -new -config ./openssl-ca.cnf -x509 -keyout cakey.pem -out cacert.pem -days 3650 -sha256 |
- 認証局の秘密鍵
- cakey.pem
- 認証局の証明書
- cacert.pem (ブラウザに「信頼されたルート証明書」としてインストールしたりします。)
サーバ証明書の作成
1 2 3 4 |
$ openssl req -new -config ./openssl-server.cnf -sha256 -keyout ./serverkey.key -out servercareq.csr $ openssl rsa -in ./serverkey.key -out ./serverkey_withpass.key $ openssl ca -config ./openssl-server.cnf -md sha256 -cert cacert.pem -keyfile cakey.pem -out servercert.crt -infiles servercareq.csr |
- サーバ秘密鍵
- serverkey.key
- サーバ証明書
- servercert.crt
クライアント証明書の作成
1 2 3 4 |
$ openssl req -new -config ./openssl-client.cnf -sha256 -keyout clientkey.key -out clientreq.csr $ openssl ca -config openssl-client.cnf -md sha256 -cert cacert.pem -keyfile cakey.pem -out clientcert.crt -infiles clientreq.csr $ openssl pkcs12 -export -in clientcert.crt -inkey clientkey.key -out clientcertinbrowser.pfx -name "ssltest.test.jp" |
- クライアント秘密鍵
- clientkey.key
- クライアント証明書
- clientcert.crt
- クライアント証明書(クライアント端末にインストールする必要がある)
- clientcertinbrowser.pfx
Apacheの設定
1 2 3 4 5 6 7 |
■/etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/pki/caCrt/servercert.crt SSLCertificateKeyFile /etc/pki/caCrt/serverkey.key SSLCACertificateFile /etc/pki/caCrt/cacert.pem SSLVerifyClient require SSLVerifyDepth 10 |
完了です。手順化してしまえば簡単ですね。