オレオレ証明書を使って無料でSSL環境を構築する方法をメモします。
最初に注意書きしておきますが、この方法を利用する場合、独自Root CAの作成/クライアントPCへのインストールまで必ず行うようにしてください。
危険性については、こちらなどが参考になります。
現在では代理店を通せば1000円台/年で利用できるサーバ証明書も存在するので、可能ならそちらを選択するのが良いですね!
(お、そちらもブログネタにできそうだぞ・・・そのうち書きます。)
そんな気にしないよ!早く教えろください!という方はこの先に進んでくださいまし。
※20141106追記
mod_sslのインストールについて記載しておりませんでした。まず、インストールをおねがいします。
1 |
yum install mod_ssl |
1,証明書を作成するディレクトリを作成・移動し、適当なファイルを作成します。
1 2 3 4 |
mkdir /etc/pki/tls/certs/my_cert/ cd /etc/pki/tls/certs/my_cert/ # /home/hoge/*の部分は、いろんなファイルが存在する実在のディレクトリに置き換えてください。 openssl md5 /home/hoge/* > rand.txt |
(以前このサイトでは、viでファイルを作成して、適当な文字列を入力する方法を紹介していました。しかし、当サイトをコピペしてしまうと同一のファイルが出来上がることに気づいたため、ハッシュ値を用いる方法に変更しています。)
2,3DES・2048bitの秘密鍵を作成します。
1 2 3 |
openssl genrsa -rand rand.txt -des3 2048 > private.key Enter pass phrase: Verifying - Enter pass phrase: |
※ここでは秘密鍵とわかりやすいよう、private.keyとして出力しました。パスフレーズは強度の高いパスワードを利用してください。
3,有効期限10年の自己証明書を作成し、パーミッションを変更しておきます。
1 2 3 4 5 6 7 8 9 10 |
openssl req -new -x509 -days 3650 -key private.key -out self.crt Enter pass phrase for private.key: ## 先に設定したパスフレーズを入力 Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Tokyo Locality Name (eg, city) [Default City]:Chuo-ku Organization Name (eg, company) [Default Company Ltd]:jdbc.tokyo Organizational Unit Name (eg, section) []:jdbc project Common Name (eg, your name or your server's hostname) []:blog.ryzen.tokyo Email Address []:samplename@jdbc.tokyo chmod 400 ./* |
重要なのは、Coommon Nameです。ここにはサイトのFQDN(完全修飾ドメイン)を入力してください。
それ以外は正直適当でも構わないはずです。
4,独自Root CAの作成とインポート
1 |
openssl x509 -in self.crt -out /var/www/html/self.der -outform DER |
作成したらブラウザからアクセスする等し、PCにインポートしておいてください。
5,Apacheの設定
1 |
vi /etc/httpd/conf.d/ssl.conf |
中身は下記
1 2 3 4 5 |
SSLPassPhraseDialog exec:/etc/pki/tls/certs/pass_phrase.sh DocumentRoot "/var/www/html" ServerName blog.ryzen.tokyo:443 SSLCertificateFile /etc/pki/tls/certs/my_cert/selt.crt SSLCertificateKeyFile /etc/pki/tls/certs/my_cert/private.key |
ネームベースのバーチャルホストでSSL設定するなら下記のように。※環境によっては利用できません。
1 2 3 4 5 6 7 8 9 |
SSLPassPhraseDialog exec:/etc/pki/tls/certs/pass_phrase.sh <VirtualHost *:443> ServerName blog.ryzen.tokyo DocumentRoot /var/www/html SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/pki/tls/certs/my_cert/self.crt SSLCertificateKeyFile /etc/pki/tls/certs/my_cert/private.key </VirtualHost> |
6,Apache起動時に秘密鍵のパスフレーズを自動で読み込むファイルを作成する
1 |
vi /etc/pki/tls/certs/pass_phrase.sh |
ファイルの中身は下記
1 2 3 |
#!/bin/sh echo "パスフレーズ" exit 0 |
実行権限付与も忘れずに。
1 |
chmod 700 /etc/pki/tls/certs/pass_phrase.sh |
これで、サーバ再起動などした時にも自動でパスフレーズを読み込むためApacheが勝手に起動してくれます。
以上の設定で、オレオレ証明書を使って無料でSSL接続が可能になります。
今回はここまで・・・
[…] 7,Apache起動時に秘密鍵のパスフレーズを自動で読み込むファイルにパスフレーズを追加する (複数のSSL環境が共存していると過程した書き方) […]
[…] 自己証明書で構築したい方はこちら […]
[…] サーバ証明書を購入する場合はこちら サーバ証明書を自己証明書にする場合はこちら […]