読者です 読者をやめる 読者になる 読者になる

プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

【EC2】 Subversion+Redmine環境の構築 (3/6) : SSLの設定

次に、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/SSL自己証明書の作成とmod sslの設定

鍵のペア作成と証明書の作成

(参考:デジタル証明書の基本的なことから説明してくれています)

技術者でなくても分かる 電子証明書とPKI入門

 

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はリポジトリの一覧を表示することができないそうです。

(参考)

http://stackoverflow.com/questions/10524646/tortoise-svn-giving-me-redirect-cycle-detected-for-url-domain-svn

 

次はRedmineの設定をしたいと思います。