Apacheで、自己署名証明書を使ってSSL暗号化通信を行う。

さくらのクラウドを使って、こつこつとサーバ環境を構築している今日この頃です。

作成するホームページやサービスでSSLを使わなくても、やはり、なにかとSSLな通信が必要な場面があります。例えばphpmyadminを使う時とか。

と、いうことで自己署名証明書によるSSL暗号化通信の設定についてです。

※ホームページやサービスで使う時には、こんなに安いSSL証明書もあります。

自己署名証明書の作成

OpenSSLをインストールします。

yum  instal l openssl

サーバ鍵と証明書を作成します。

# cd /etc/pki/tls/certs/
# make ssl.flatlabs.net.crt
umask 77 ; \
        /usr/bin/openssl genrsa -aes128 2048 > ssl.flatlabs.net.key
Generating RSA private key, 2048 bit long modulus
......................................+++
...............+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
umask 77 ; \
        /usr/bin/openssl req -utf8 -new -key ssl.flatlabs.net.key -x509 -days 365 -out ssl.flatlabs.net.crt -set_serial 0
Enter pass phrase for ssl.flatlabs.net.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) []:Kagoshima
Locality Name (eg, city) [Default City]:Kagoshima-Shi
Organization Name (eg, company) [Default Company Ltd]:FlatLabs
Organizational Unit Name (eg, section) []:FlatLabs
Common Name (eg, your name or your server's hostname) []:ssl.flatlabs.net
Email Address []:flatlabs@gmail.com

サーバ鍵を移動しておきます。

# mv ssl.flatlabs.net.key /etc/pki/tls/private/

SSLの設定

mod_sslをインストールします。

# yum install mod_ssl

mod_sslをインストールすると、/etc/httpd/conf.d/にssl.confが保存されるので、そのファイルをベースに環境に合わせて設定します。以下のような感じで、VirtualHostを設定します。

# vi /etc/httpd/conf.d/ssl.conf
<VirtualHost *:443>
ServerName ssl.flatlabs.net
DocumentRoot /var/www/html/ssl.flatlabs.net/

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/ssl.flatlabs.net.crt
SSLCertificateKeyFile /etc/pki/tls/private/ssl.flatlabs.net.key
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
</VirtualHost>

場合によっては、ディレクティブで、SSLRequireSSLを設定してSSL接続専用にしておきます。

< Directory "/var/www/html/ssl.flatlabs.net">
SSLRequireSSL
</Directory>

iptablesを設定します。

# iptables -A INPUT -p tcp ---dport 443 -j ACCEPT
# /etc/init.d/iptables save
# /etc/init.d/iptables restart

パスフレーズの削除

現状では、Apacheの起動時に毎回パスフレーズの入力を求められます。

httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server ssl.flatlabs.net.key:443 (RSA)
Enter pass phrase:

つまりは、このままでは、Apacheを自動起動することができません。場合によって、秘密鍵からパスフレーズを削除して入力を求められないようにします。

openssl rsa -in ssl.flatlabs.net.key -out ssl.flatlabs.net.nonepf.key
# vi /etc/httpd/conf.d/ssl.conf
SSLCertificateKeyFile /etc/pki/tls/private/ssl.flatlabs.net.nonepf.key

SSL暗号化通信設定完了

ブラウザでアクセスすると、ものものしい感じの警告が出て、なんかちょっとな感じはしますが、これで、SSL暗号化通信の設定は完了です。

カテゴリー: サーバ・インフラのこと   タグ: , ,   この投稿のパーマリンク

トラックバック

Apacheで、自己署名証明書を使ってSSL暗号化通信を行う。 への1件のコメント

  1. 水着 激安 より:

    Apacheで、自己署名証明書を使ってSSL暗号化通信を行う。 – FlatLabs

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>