(追記 証明書の有効期限は長すぎると信頼されなくなるようになっており10年とかにすると信頼されない)
自分のSSLサイトに証明書をつける。
金を出して買うのではない。
自己署名証明書でもない。
CAのお墨付きの証明書だ。
ただし、そのCAは自分で建てる。
結果的には自己署名証明書のようなものだが。
サーバはさくらのVPS、centos 6.9
# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Oct 19 2017 16:43:38
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
下記三つのファイルに有効期限の設定があるが、
/etc/pki/tls/openssl.cnf
#365を3650に
/etc/pki/tls/misc/CA
#365を3650に
/etc/pki/tls/misc/CA
#1095を3650に
1. CAを作る
/etc/pki/tls/misc/CA -newca
CA certificate filename (or enter to create)
#enterを入力
writing new private key to '/etc/pki/CA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
#cakeyのパスワードを2回入力
#以下は適当に
#Common NameはURLとして入力するホスト名にする。
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Tokyo
Organization Name (eg, company) [Default Company Ltd]:example.com
Organizational Unit Name (eg, section) []:example
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:mail@example.com
以下は何も入力せずにenterでよい
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
CA証明書は下記にできる
/etc/pki/CA/cacert.pem
CA秘密鍵は
/etc/pki/CA/private/cakey.pam
2. サーバ証明書をつくる
2-1. サーバ証明書の秘密鍵をつくる
# mkdir /etc/pki/ssl
# cd /etc/pki/ssl
# openssl genrsa -out server.key -aes256 2048
2-2. CSR(Certificate Signing Request)の作成
openssl req -new -key server.key -out server.csr
3. サーバ証明書に署名する
openssl ca -config /etc/pki/tls/openssl.cnf -in server.csr -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -out server.crt
パスワード、yを2回いれる。
下記のエラーになったときは、
failed to update database
TXT_DB error number 2
/etc/pki/CA/newcerts/に xxxxx.pem
というファイルがあるはずなので、
openssl ca -revoke /etc/pki/CA/newcerts/xxxxx.pem
をやってから、署名をもう一度やる。
openssl rsa -in server.key -out server.key
4. apacheの設定
vi /etc/httpd/conf.d/ssl.conf
証明書と秘密鍵が /etc/pki/ssl にあるとして
SSLCertificateFile /etc/pki/ssl/server.crt
SSLCertificateKeyFile /etc/pki/ssl/server.key
に変更して
service httpd restart
サイトにアクセスすると証明書が信頼できないというエラーが表示される。
証明書を表示すると「この証明書の発行者を検出できませんでした。」
となっている。
5. CA証明書をクライアントにインストール
Windows10の場合
/etc/pki/CA/cacert.pem
をクライアントにコピーし、拡張子を.crtに変える。
ダブルクリックすると証明書として表示されるので、「証明書のインストール」をクリックする。
ウィザードが走るのでインストールする。
私は「ローカルコンピューター」「信頼されたルート証明機関」にいれた。
さあこれでエラーが表示されなくなった....
と思ったら、ダメだ。
IEはエラーが表示されなくなったが、
chromeとfirefoxは依然として証明書を信頼してくれない。
chromeは
NET::ERR_CERT_COMMON_NAME_INVALID
Firefoxは
SEC_ERROR_UNKNOWN_ISSUER
....。
調べたら、対応策があるようなので、次回。
続き↓
https://monqy.blogspot.com/2017/12/blog-post_87.html