前回の続き。
実際に使うのなら、セキュリティ関係をきっちりしとかなきゃな・・と思って、
プラグインのインストールより先に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で。
コメント
[…] 前回の続き。 […]