AWSに入れたRedmineのSSL(HTTPS)設定

前回の続き。

実際に使うのなら、セキュリティ関係をきっちりしとかなきゃな・・と思って、
プラグインのインストールより先にSSLの設定を行う事にした。
ちなみに、自分用なのでオレオレ証明書です。
ま、アクセスのたびに警告が出るかもしれないけど、気にしない。

 

必要なモジュールのインストール

まず、SSLに対応するためには、「openssl」と「mod_ssl」が必要。
現状を確認。

[code lang=”bash” gutter=”off”]
$ sudo yum list installed | grep ssl
openssl.x86_64 1:1.0.1k-10.87.amzn1 @amzn-updates
openssl-devel.x86_64 1:1.0.1k-10.87.amzn1 @amzn-updates
python27-backports-ssl_match_hostname.noarch
[/code]

mod_sslが入っていないので、インストール
[code lang=”bash” gutter=”off”]
$ sudo yum -y install mod_ssl
[/code]

 

秘密鍵(RSA)の生成

[code lang=”bash” gutter=”off”]
$ sudo openssl genrsa -out server.key 1024
[/code]

 

証明書要求(CSR)の生成

しょせん、オレオレ証明書用なのでテキトーに。
[code lang=”bash” gutter=”off”]
$ sudo openssl req -new -key server.key -out server.pem -sha1
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) []:Tokyo
Locality Name (eg, city) [Default City]:(未入力)
Organization Name (eg, company) [Default Company Ltd]:(未入力)
Organizational Unit Name (eg, section) []:(未入力)
Common Name (eg, your name or your server’s hostname) []:(ElasticIPのアドレス)
Email Address []:(未入力)

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:(未入力)
An optional company name []:(未入力)
[/code]

 

証明書の発行(自己署名)

[code lang=”bash” gutter=”off”]
$ sudo openssl x509 -in server.pem -out server.crt -req -signkey server.key -days 365 -sha1
Signature ok
subject=/C=JP/ST=Tokyo/L=Default City/O=Default Company Ltd/CN=52.68.51.143
Getting Private key
[/code]

 

パーミッションの設定

できあがった鍵はそのままだとアレなんで、パーミッションを変更しておく。
[code lang=”bash” gutter=”off”]
$ sudo chmod 400 server.*
$ ls -l
total 12
-r——– 1 root root 855 Jul 12 08:30 server.crt
-r——– 1 root root 891 Jul 12 08:29 server.key
-r——– 1 root root 651 Jul 12 08:29 server.pem
[/code]

 

鍵の配置

できあがった鍵を所定の場所に配置。
[code lang=”bash” gutter=”off”]
$ sudo mv server.* /etc/pki/tls/private/
[/code]

 

Apacheの設定

/etc/httpd/conf/httpd.confを編集

まず、必要なモジュールを読み込むように設定する。
[code lang=”xml” line=”1″]
LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so
[/code]

次に、http -> https ヘのリダイレクト設定(全体をssl化する場合)。
こうしておく事で、httpでアクセスしてきてもhttpsにリダイレクトされる。
[code lang=”xml” line=”1″]
<Directory />
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (^.*/redmine/.*$)
RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
</Directory>
[/code]

ちなみに、ログインページのみSSL化したい場合は以下のように記述する。
要するに、loginページ以外でhttpsアクセスしてきたらhttpに、
loginページでhttpアクセスしてきたらhttpsにリダイレクトしている。
※今回、私はこちらを採用。
[code lang=”xml” line=”1″]
<Directory />
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(^.*/redmine/login.*$)
RewriteCond %{REQUEST_URI} !(^.*/redmine/stylesheets.*$)
RewriteCond %{REQUEST_URI} !(^.*/redmine/javascripts.*$)
RewriteRule /.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (^.*/redmine/login.*$)
RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
</Directory>
[/code]

鍵情報を設定
[code lang=”xml” line=”1″]
<VirtualHost *:443>
SSLCertificateKeyFile /etc/pki/tls/private/server.pem
SSLCertificateFile /etc/pki/tls/private/server.pem
SSLCertificateChainFile /etc/pki/tls/private/server.pem
</VirtualHost>
[/code]

 

最後にApacheを再起動

[code lang=”bash” gutter=”off”]
$ sudo service httpd restart
[/code]

ブラウザでアクセスして、動作確認して終了。

 

さて、次回はgitのインストールしよっかな。
どうせなら、リポジトリはAmazon S3で。

 

コメント

  1. […] 前回の続き。 […]

タイトルとURLをコピーしました