次に、httpsでのアクセスにするために、SSLを設定します。
【EC2】 Subversion+Redmine環境の構築 (1/6)
【EC2】 Subversion+Redmine環境の構築 (2/6) : Subversionの設定
【EC2】 Subversion+Redmine環境の構築 (3/6) : SSLの設定 ←ここです
【EC2】 Subversion+Redmine環境の構築 (4/6) : Redmine の設定
【EC2】 Subversion+Redmine環境の構築 (5/6) : バックアップの設定
【EC2】 Subversion+Redmine環境の構築 (6/6) : 雑多な設定
オレオレ証明書の作成
ですが、公的な認証局が発行したサーバー証明書なんて持っていないので、自己署名証明書(おわゆるオレオレ証明書)で代用します。手順は参考先サイトと同じです。
(参考:以下の手順が書かれています)
http://wiki.bitnami.org/Components/Apache#How_to_create_a_SSL_certificate.3f
最初にサーバー証明書の秘密鍵を作成します。
bitnami@ip-10-132-10-247:/opt/bitnami$ sudo /opt/bitnami/common/bin/openssl genrsa -des3 -out /opt/bitnami/apache2/conf/privkey.pem 1024 Generating RSA private key, 1024 bit long modulus .++++++ ................++++++ e is 65537 (0x10001) Enter pass phrase for /opt/bitnami/apache2/conf/privkey.pem: Verifying - Enter pass phrase for /opt/bitnami/apache2/conf/privkey.pem: bitnami@ip-10-132-10-247:/opt/bitnami$
次にCSRを作成します。ちなみに、CSRとは、認証局に対して、サーバー証明書を発行してもらう際に作成するもので、サーバー証明書の公開鍵と所有者の情報からなっています。詳しくはこちらなど。
bitnami@ip-10-132-10-247:/opt/bitnami$ sudo /opt/bitnami/common/bin/openssl req -new -key /opt/bitnami/apache2/conf/privkey.pem -out /opt/bitnami/apache2/conf/cert.csr Enter pass phrase for /opt/bitnami/apache2/conf/privkey.pem: 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) [AU]:JP State or Province Name (full name) [Some-State]:Mie Locality Name (eg, city) []:Ise Organization Name (eg, company) [Internet Widgits Pty Ltd]:Private Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:xxx.mori-soft.com Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: bitnami@ip-10-132-10-247:/opt/bitnami$
入力の際、Common Name にはサーバーにアクセスする際のFQDNを入れることに注意してください。
自己署名の証明書を作ります。まず、パスワードを外した秘密鍵を作っておきます。
bitnami@ip-10-132-10-247:/opt/bitnami$ sudo /opt/bitnami/common/bin/openssl rsa -in /opt/bitnami/apache2/conf/privkey.pem -out /opt/bitnami/apache2/conf/server.key Enter pass phrase for /opt/bitnami/apache2/conf/privkey.pem: writing RSA key bitnami@ip-10-132-10-247:/opt/bitnami$
これを使って、自己署名証明書を作ります。
bitnami@ip-10-132-10-247:/opt/bitnami$ bitnami@ip-10-132-10-247:/opt/bitnami$ sudo /opt/bitnami/common/bin/openssl x509 -in /opt/bitnami/apache2/conf/cert.csr -out /opt/bitnami/apache2/conf/server.crt -req -signkey /opt/bitnami/apache2/conf/server.key -days 365 Signature ok subject=/C=JP/ST=Mie/L=Ise/O=Private/CN=xxx.mori-soft.com Getting Private key bitnami@ip-10-132-10-247:/opt/bitnami$
これで証明書の準備ができました。なお、作成したファイルは次のようになります。
- privatekey.pem : 秘密鍵(パスワード付)
- cert.csr : CSR(Certificate Signing Request)、公開鍵+組織等の情報
- server.key : 秘密鍵(パスワード解除)
- server.crt : X.509形式の自己署名証明書
(参考:上記の内容について説明がされています)
(参考:デジタル証明書の基本的なことから説明してくれています)
apacheの設定
証明書が作成出来たら、apacheの設定を行います。BitnamiのRedmineスタックの説明では、httpd.conf に対して、
Include conf/extra/httpd-ssl.conf
を有効にしろ、とあるのですがデフォルトで設定済みなので、実際にすることはありません。
なので、apacheを再起動して、httpsでアクセスできればOKです。
https接続についての雑多なメモ
いくつか気になった点があったのでちょっと混乱しそうですのでメモしておきます。
Subversionのログの作者
httpsで接続し、コミットなどをした場合、subversionのログの作者は、Basic認証で入力したユーザー名になります。もし、 Basic認証をしていない場合は、作者はなしになります。また、svn+sshなどで接続し、コミットした場合は、ssh接続時のユーザーになります。
OpenSSLの問題
また、httpsでサーバーにアクセスするクライアントによっては下記のようにエラーが出る場合があります。
mor@ubuntu:~/tmp$ mor@ubuntu:~/tmp$ svn info 'https://xxx.mori-soft.com/svn/myfirstapp' svn: OPTIONS (URL: 'https://xxx.mori-soft.com/svn/myfirstapp'): SSL handshake failed: SSL error: A TLS warning alert has been received. (https://xxx.mori-soft.com) mor@ubuntu:~/tmp$
これは、クライアントのOpenSSLのバージョンが古いと出る場合があるそうです(上記エラーが出たのは、Ubuntu 10.04LTS のデスクトップ版で OpenSSL は 0.9.8k でした)。
SubversionのFAQによると、OpenSSL 1.0.0d 以降なら問題ないようです。
(参考)
http://subversion.apache.org/faq.html#ssl-error-336032856
TortoiseSVNの問題
あと、Windowsでよく使われるTortoiseSVNはリポジトリの一覧を表示することができないそうです。
(参考)