てきとうなメモ

本の感想とか技術メモとか

ApacheのSSL対応

ssl利用する必要があったのでいろいろ設定

opensslのインストール

$ apt-get install openssl

秘密鍵の生成(トリプルDESで1024bitの鍵)

$ openssl genrsa -des3 1024 > server.key

CSRファイルの作成(server.keyの秘密鍵を利用する)

$ openssl req -new -key server.key > server.csr

自己証明書の作成(有効期限を365日,server.csrを利用して,server.keyで署名)

$ openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

あとはapacheの設定.

まず,sslを有効にする.モジュールのロードと基本的な設定は/etc/apache2/mods-available/ssl.{load,conf}で行われている.

$ a2enmod ssl

次に,ssl用のVirtualHostを作成する.HTTPの方が以下のようになっているとして

$ cat /etc/apache2/sites-available/default
NameVirtualHost *:80
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName server.domain:80
        
        ...
</VirtualHost>

HTTPSの方は以下のようにする.server.crtとserver.keyは先程作成したものを利用する.

$ cat /etc/apache2/sites-available/ssl
NameVirtualHost *:443
<VirtualHost *:443>
        SSLCertificateFile      /etc/apache2/ssl/server.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/server.key
        ServerAdmin webmaster@localhost
        ServerName server.domain:443
        SSLEngine on

        ...
</VirtualHost>

最後にこのサイトを有効にして,再起動

$ a2ensite ssl
$ /etc/init.d/apache2 restart

これで

https://server.domain/

HTTPSでアクセスすることができるようになる.

特に難しいところはないはずだったのだが,変なところではまってしまった.SSL周りの設定かVirtualHostの設定がおかしい場合は,"Invalid method in request \x16\x03"のようなエラーがログに出力される.

参考