(追記 証明書の有効期限は長すぎると信頼されなくなるようになっており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.pemCA秘密鍵は
/etc/pki/CA/private/cakey.pam
2. サーバ証明書をつくる
2-1. サーバ証明書の秘密鍵をつくる# mkdir /etc/pki/ssl # cd /etc/pki/ssl # openssl genrsa -out server.key -aes256 20482-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