Linux SSL(https)

(2008.12.5, 2013.1.2, 2014.11.13)

apacheでSSL(Secure Socket Layer),暗号化通信をおこなう.

(環境) CentOS 5.2-5.8, CentOS 6.x

(以下プロンプトが#ならroot,$なら普通のユーザー)

インストール

mod_sslインストール

# yum install mod_ssl

秘密鍵作成(pass phraseはすぐに削除するので何でもよい)

# cd /etc/pki/tls/certs/

# make server.key


...


Enter pass phrase:

Verifying - Enter pass phrase:


# openssl rsa -in server.key -out server.key

Enter pass phrase for server.key:

writing RSA key

証明書作成(ホスト名は正確に入れること)

# make server.crt


...


Country Name (2 letter code) [GB]:JP

State or Province Name (full name) [Berkshire]:Kanagawa

Locality Name (eg, city) [Newbury]:Sagamihara

Organization Name (eg, company) [My Company Ltd]:Kitasato University

Organizational Unit Name (eg, section) []:College of Liberal Arts and Sciences

Common Name (eg, your name or your server's hostname) []:ホスト名(xx.kitasato-u.ac.jpまたは10.1.0.0など)

Email Address []:管理者のメールアドレス

秘密鍵と証明書の設定

# cd /etc/httpd/conf.d/

# cp ssl.conf ssl.conf.org


# vi ssl.conf


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

SSLCertificateKeyFile /etc/pki/tls/certs/server.key

SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt ←(SSL証明書を購入して)中間証明書がある場合


# General setup for the virtual host, inherited from global configuration

#DocumentRoot "/var/www/html"

DocumentRoot "/var/www/html"

ポート443番(https)をOPEN

rootでGUIログインして,[システム]-[管理]-[セキュリティレベルとファイヤーウォールの設定]でおこなうか,このHowtoのコマンドメモに載っている方法でおこなう.

httpdを再起動

/etc/init.d/httpd restart

設定

ディレクトリにパスワードをかけ,https:でのアクセスしかできないようにするには

そのディレクトリの.htaccessファイルにSSLRequireSSLという行を追加する.

httpからhttpsへリダイレクトさせるには,/etc/httpd/conf.dディレクトリにrewrite.confファイルを設置する。

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

<ifModule mod_rewrite.c>

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

</ifModule>

(注)以下の方法では,.htaccessファイルでディレクトリ表示をONにするOptions Indexes効かなくなる。解決方法は不明。

リダイレクトさせたいディレクトリに.htaccessファイルを設置し,以下の行を追加。そのディレクトリ以下のディレクトリが全てリダイレクトの対象になる。

RewriteEngine on

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://kilin.clas.kitasato-u.ac.jp/$1 [R=301,L]

2014年秋のSSL 3.0 の脆弱性 (POODLE) 対策(CVE-2014-3566)

/etc/httpd/conf.d/ssl.conf の SSLProtocol All で始まる行を検索し,

SSLProtocol All -SSLv2 -SSLv3

と書き換える。

参考

  1. CentOSで自宅サーバー構築 (http://centossrv.com/) 2008.5現在

  2. SSL 3.0 の脆弱性 (POODLE) 対策で Web サーバの SSL 3.0 を無効にした件とブラウザ側の対処まとめ(http://hyper-text.org/archives/2014/10/ssl_3_0_disable.shtml)2014.11現在