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

前回の続き。

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

 

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

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

$ 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

mod_sslが入っていないので、インストール

$ sudo yum -y install mod_ssl

 

秘密鍵(RSA)の生成

$ sudo openssl genrsa -out server.key 1024

 

証明書要求(CSR)の生成

しょせん、オレオレ証明書用なのでテキトーに。

$ 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 []:(未入力)

 

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

$ 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

 

パーミッションの設定

できあがった鍵はそのままだとアレなんで、パーミッションを変更しておく。

$ 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

 

鍵の配置

できあがった鍵を所定の場所に配置。

$ sudo mv server.* /etc/pki/tls/private/

 

Apacheの設定

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

まず、必要なモジュールを読み込むように設定する。

LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so

次に、http -> https ヘのリダイレクト設定(全体をssl化する場合)。
こうしておく事で、httpでアクセスしてきてもhttpsにリダイレクトされる。

<Directory />
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} (^.*/redmine/.*$)
    RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  </IfModule>
</Directory>

ちなみに、ログインページのみSSL化したい場合は以下のように記述する。
要するに、loginページ以外でhttpsアクセスしてきたらhttpに、
loginページでhttpアクセスしてきたらhttpsにリダイレクトしている。
※今回、私はこちらを採用。

<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>

鍵情報を設定

<VirtualHost *:443>
  SSLCertificateKeyFile /etc/pki/tls/private/server.pem
  SSLCertificateFile /etc/pki/tls/private/server.pem
  SSLCertificateChainFile /etc/pki/tls/private/server.pem
</VirtualHost>

 

最後にApacheを再起動

$ sudo service httpd restart

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

 

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

 


この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

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

トラックバック URL