INDEX
- 1 1.openssl.cnfの修正
- 2 2.認証局(ca)の開設
- 3 3.秘密鍵作成のための擬似乱数の情報を生成
- 4 4.サーバ用秘密鍵(server.key)の作成
- 5 5.認証局への署名要求書(server.csr)の作成
- 6 6.署名要求書(server.csr)にCA用秘密鍵(ca.key)を使用して署名し、サーバー証明書(server.crt)を発行する。
- 7 7.(※任意)サーバー証明書(server.crt)をDERフォーマットへ変換してブラウザインポート用のバイナリ(ca.der)を作成
- 8 8.サーバー用秘密キーからパスフレーズを削除
- 9 9.mod_sslのインストール
- 10 10.ssl.confの編集
- 11 11.ネームベースのSSLの設定 httpd.confの編集
- 12 12.apacheの再起動
- 13 13.クライアントのhostファイルの編集
- 14 14.クライアントにサーバー証明書をインストール
- 15 15.クライアントにCA証明書をインストール
- 16 16.SSLでアクセス
1.openssl.cnfの修正
basicConstraints=CA:TRUE
にする。自己認証局(ca)を構築時にはTrueにしないと
この修正をしてからcaを開設しないとca証明書が正しく機能しない。
実際にはIEでは白い画面になるばかりでハマります。
# vim /etc/pki/tls/openssl.cnf ###basicConstraints=CA:FALSE basicConstraints=CA:TRUE
2.認証局(ca)の開設
# cd /etc/pki/tls/misc/ # sh CA -newca CA certificate filename (or enter to create)★空 Making CA certificate ... Generating a 1024 bit RSA private key ..............++++++ ..............++++++ writing new private key to '../../CA/private/./cakey.pem' Enter PEM pass phrase:★capass Verifying - Enter PEM pass phrase:★capass ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:JP State or Province Name (full name) [Berkshire]:Tokyo ]Locality Name (eg, city) [Newbury]:hatiouji Organization Name (eg, company) [My Company Ltd]:CACompany ←ここはサーバー証明書と合わせる Organizational Unit Name (eg, section) []:CASection Common Name (eg, your name or your server's hostname) []:catest.jp Email Address []:★ Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:★ An optional company name []:★ Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for ../../CA/private/./cakey.pem:★capass Check that the request matches the signature Signature ok Certificate Details: Serial Number: 0 (0x0) Validity Not Before: Dec 27 08:38:41 2012 GMT Not After : Dec 27 08:38:41 2015 GMT Subject: countryName = JP stateOrProvinceName = Tokyo organizationName = CACompany organizationalUnitName = CASection commonName = catest.jp X509v3 extensions: X509v3 Basic Constraints: CA:TRUE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: DB:4C:02:42:86:E8:9E:1A:97:DE:C2:B1:D8:A4:8C:CA:7A:BD:87:2C X509v3 Authority Key Identifier: keyid:DB:4C:02:42:86:E8:9E:1A:97:DE:C2:B1:D8:A4:8C:CA:7A:BD:87:2C Certificate is to be certified until Dec 27 08:38:41 2015 GMT (1095 days) Write out database with 1 new entries Data Base Updated
/etc/pki/CA/cacert.pem 認証局用証明書(ca.crt)
/etc/pki/CA/private/cakey.pem CA管理者のパスフレーズ
ができる
3.秘密鍵作成のための擬似乱数の情報を生成
# cd /etc/httpd/conf/ssl/ # openssl md5 * > ./rand.dat
4.サーバ用秘密鍵(server.key)の作成
# openssl genrsa -des3 -out server2012.key -rand rand.dat 2048 48 semi-random bytes loaded Generating RSA private key, 2048 bit long modulus ...................................................+++ ...+++ e is 65537 (0x10001) Enter pass phrase for server2012.key:★server2012 Verifying - Enter pass phrase for server2012.key:★server2012
5.認証局への署名要求書(server.csr)の作成
# openssl req -new -key server2012.key -out server2012.csr Enter pass phrase for server2012.key:★server2012 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:★JP State or Province Name (full name) [Berkshire]:★Tokyo Locality Name (eg, city) [Newbury]:★chuou-ku Organization Name (eg, company) [My Company Ltd]:★CACompany ★★合わせる!! Organizational Unit Name (eg, section) []:★TestSection Common Name (eg, your name or your server's hostname) []:★test.jp Email Address []:★ Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:★ An optional company name []:★
6.署名要求書(server.csr)にCA用秘密鍵(ca.key)を使用して署名し、サーバー証明書(server.crt)を発行する。
※この際サーバ用秘密鍵(server.key)を使用して署名すれば、自己署名となる。
※CAの証明書等もプログラムで使用するため実行ディレクトリも関係する。(././CAが必要)
※2と5のCompanyはあわせておく必要がある。下記のようなエラーがでる。
CA certificate (CACompany) and the request (TestCompany)
# cd /etc/pki/tls/misc # openssl ca -in /etc/httpd/conf/ssl/server2012.csr -out /etc/httpd/conf/ssl/server2012.crt Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for ../../CA/private/cakey.pem:★capass Check that the request matches the signature Signature ok Certificate Details: Serial Number: 3 (0x3) Validity Not Before: Dec 27 10:40:26 2012 GMT Not After : Dec 27 10:40:26 2013 GMT Subject: countryName = JP stateOrProvinceName = Tokyo organizationName = CACompany organizationalUnitName = TestSection commonName = test.jp X509v3 extensions: X509v3 Basic Constraints: CA:TRUE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: E8:4B:26:99:B7:D7:40:1D:42:FA:3C:40:B5:44:08:AA:76:F6:87:2A X509v3 Authority Key Identifier: keyid:DB:4C:02:42:86:E8:9E:1A:97:DE:C2:B1:D8:A4:8C:CA:7A:BD:87:2C Certificate is to be certified until Dec 27 10:40:26 2013 GMT (365 days) Sign the certificate? [y/n]:★y 1 out of 1 certificate requests certified, commit? [y/n]★y Write out database with 1 new entries Data Base Updated
Certificate is to be certified until Dec 27 10:38:48 2013 GMT (365 days)
Sign the certificate? [y/n]:y
failed to update database
TXT_DB error number 2
というエラーがでる場合は、
/etc/pki/CA/index.txt
を削除して空のindex.txtを作成して再実行する。
7.(※任意)サーバー証明書(server.crt)をDERフォーマットへ変換してブラウザインポート用のバイナリ(ca.der)を作成
# cd /etc/httpd/conf/ssl/ # openssl x509 -inform PEM -outform DER -in server2012.crt -out server2012.der
8.サーバー用秘密キーからパスフレーズを削除
これをしておかないと、apacheの再起動のたびに入力を要求されます。
運用上好ましくないので削除しておきます。
# cp server2012.key server2012.key.bak # openssl rsa -in server2012.key -out server2012.key Enter pass phrase for server2012.key:★server2012 writing RSA key
9.mod_sslのインストール
# yum install mod_ssl
10.ssl.confの編集
#vim /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/httpd/conf/ssl/server2012.crt SSLCertificateKeyFile /etc/httpd/conf/ssl/server2012.key
11.ネームベースのSSLの設定 httpd.confの編集
ipでアクセスする場合は不要
#vim /etc/httpd/conf/httpd.conf NamevirtualHost *:443 <VirtualHost *:443> DocumentRoot /var/www/html/ ServerName test.jp </VirtualHost>
12.apacheの再起動
※この際、8のパスフレーズの削除を行っていなければ、パスワードの入力を求められる
# service httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ]
13.クライアントのhostファイルの編集
windowsの場合
C:\WINDOWS\system32\drivers\etc/hosts を編集
192.168.xx.xx test.jpを追加
linuxの場合
# vim /etc/hosts を編集 192.168.xx.xx test.jpを追加
14.クライアントにサーバー証明書をインストール
6か7で作成した証明書をクライアントのブラウザにインストールする。
15.クライアントにCA証明書をインストール
2で作成した認証局用証明書をインストールする。
これをインストールしておかないと、「証明書は信頼できません」となってしまう。
一般的な認証局用証明書は、ブラウザにプレインストールされているが、
今回は自作の認証局なのでこの作業が必要になる。
CA証明書はそのままではクライアントにインストールできないので、derに変換してインストールする。
# openssl x509 -inform pem -in cacert.pem -outform der -out cacert.der