OpenSSL

OpenSSLを使うとサーバーの設定だけで、
安全な暗号化通信が可能です。
しかし、使用ブラウザに登録されている認証局から
認証されない限り、ブラウザからこのサイトは危険!
という警告を受けることになります。
自分だけで使うだけなら警告を無視して、閲覧を
強行すればよいのですが、ショッピングカートなどの
個人情報を扱う場合は、警告が出るようなサイトでは
たぶん相手にされないことになるでしょう。

一昔前は認証されるために、年間数万~10数万円を要し、
とても個人では払えるものではありませんでした。
しかし、最近は国内外にバルクを扱う格安の代理店が
出現していて、個人でも手が出せる価格になっています。
そこで、ブラウザに登録された認証局で、警告を出さない
というだけの目的に絞って、格安の代理店を使い
申請を行ってみます。

格安SSLをWeb上から申し込み認証を得る
(参考 http://define.jp/ 年1000円ちょっと!)

プライベートキーを作成
#cd /etc/pki/tls/private
#openssl genrsa -des3 -out hoge.key 2048
       パスフレーズを訊かれるので2回入力する。ここでのパスフレーズは後から
       重要になるので、忘れないように。

プライベートキーを基に証明書署名要求(CSR)を作成
(入力するところは太字)

#openssl req -new -key hoge.key -out mousikomi.csr

  Generating RSA private key, 2048 bit long modulus
………+++
…………………+++
e is 65537 (0x10001)
Enter pass phrase for hoge.key:
Verifying – Enter pass phrase for hoge.key:
[root@ns3 private]# #openssl req -new -key hoge.key -out mousikomi.csr
[root@ns3 private]# #openssl req -new -key hoge.key -out hoge.csr
[root@ns3 private]# ll
合計 8
-rw-r–r– 1 root root 1743 2011-06-07 22:27 hoge.key
-rw——- 1 root root 891 2010-12-21 00:31 localhost.key
[root@ns3 private]# openssl req -new -key hoge.key -out mousikomi.csr
Enter pass phrase for hoge.key:
unable to load Private Key
3078178524:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:536:
3078178524:error:0906A065:PEM routines:PEM_do_header:bad decrypt:pem_lib.c:476:
[root@ns3 private]# openssl req -new -key hoge.key -out mousikomi.csr
Enter pass phrase for hoge.key:
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) [XX]:JP
State or Province Name (full name) []:HOKKAIDO
Locality Name (eg, city) [Default City]:SAPPORO
Organization Name (eg, company) [Default Company Ltd]:Hoge Co.,Ltd.
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server’s hostname) []:hogehoge.com
Email Address []:info@hogehoge.com

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:そのままEnter
An optional company name []:そのままEnter

これで /etc/pki/tls/private/配下にmousikomi.csrが作成される。

申込 
Web上での申し込み段階で、csrの内容を貼り付ける手順がある。

#cat /etc/pki/tls/private/mousikomi.csr

表示されたものを貼り付ける。
こんな感じのやつ

—–BEGIN CERTIFICATE REQUEST—–
MIIBzTCCATYCAQAwgYwxCzAJBgNVBAYTAkpQMREwDwYDVQQIDAhIb2trYWlkbzEQ
MA4GA1UEBwwHU2FwcG9ybzEYMBYGA1UECgwPQ29tc29uIENvLixMdGQuMQswCQYD
VQQLDAJJVDESMBAGA1UEAwwJY29tc29uLmpwMR0wGwYJKoZIhvcNAQkBFg5pbmZv
QGNvbXNvbi5QcDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwjN8UHRGWYNt
3oqW21T1YumikFMPJCtgeg1SEc9GMVCO45rfI/tAH6jv8MLXj25URMMuyG5evz94
wP4WJDKLAmJOpgHqRUeLII/WwL/jKQvGnVwvER1x8W1OmIyLjfLAgFFBSwurldJX
Hq2G3E0D0kF1vaChPoD1aQPys7VP6gMCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GB
AK0PNoTF+EAbwW0UuP1Q3jf2+DkfHZSBq7vt9zKuhQBXpvQAbGbbt3btirayLNHE
ickkeCDQ7vyem4mE/6gfRkhlrL5lGIJOFpOCa6Wo0Tq2+qsQWeEGbTYYg2K5VPtw
SKGO2kKBzigutPg2S4OpMPj1BDHHnmTE40I5bhPxdp0h
—–END CERTIFICATE REQUEST—–

 (本物ではありません。アレンジが入ってます。)
 

CRTが発行された旨のメールが届くので、メールから
コピーし貼り付ける。

#vi /etc/pki/tls/certs/hoge.crt
  メールで送られてきたものをペースト。

httpdを再起動しますが、このままだと(システムを含む)
再起動時に、設定した パスフレーズを尋ねられます。
 
—————————————————————

サーバー機及びHTTPD再起動時、パスフレーズを
尋ねられない設定にする

#cd /etc/pki/tls/private
#/usr/bin/openssl rsa -in domainname.key -out domainname.key
#  パスフレーズ入力
(再起動時、パスフレーズを尋ねられない。)
—————————————————————–

これらのファイルの置き場をssl.confで指定

# vi /etc/httpd/conf.d/ssl.conf

### 行頭に#はコメント行となります。

######### 基本設定(ディフォルトのまま)###########

LoadModule ssl_module modules/mod_ssl.so

Listen 443

SSLPassPhraseDialog builtin

SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300

SSLMutex default

SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

####### hogehoge.com #############################

<VirtualHost 219.117.245.xxx:443>

DocumentRoot “/home/hoge/public_html”
ServerName hogehoge.com:443

ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log
LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLCertificateFile /etc/pki/tls/certs/hoge.crt

SSLCertificateKeyFile /etc/pki/tls/private/hoge.key

<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/var/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

</VirtualHost>

### 複数のドメイン anotherdomain.jp ###########################
### IPアドレスは別物が必要

   

<VirtualHost 219.117.245.yyy:443>

DocumentRoot “/home/hare/public_html”
ServerName anotherdomain.jp:443

ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log
LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLCertificateFile /etc/pki/tls/certs/mild-heart/domainname-2011.crt

SSLCertificateKeyFile /etc/pki/tls/private/mild-heart/domainname-2011.key

<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/var/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

</VirtualHost>

##########################################################

httpdを再起動します。
今度はパスフレーズは尋ねられずに再起動できます。

サイトを確認します。
https://hogehoge.com に鍵のマークが付いて
警告が出なければOKです。

*hogehoge.comにしか有効ではありません。
 www.hogehoge.comやshop.hogehoge.comなども
 有効にしたい場合はRapidSSL(R) Wildcardを
 申し込みます。(1万円ちょっと/年)
*実在証明(運用者情報)の証明はされません。
*ブラウザの種類によっては警告が出るかもしれません。
 (特にスマホなど。)

スマホ対策についてはサブカテゴリをご覧ください。

HOME