ケース
すでに https://hoge.com というサイトを公開しているサーバーがある(IPは仮に111.22.333.444とする)
(今回はさくらVPSを使っています)
またこのサーバー内には,5443番ポートで動作しているnode.js(Express)アプリがある
このアプリをhttps://fuga.com というドアドレスで新たに公開したい
環境はApache2.4
centos7
です
DNSの設定とSSL証明書の取得
DNS設定
fuga.comのドメインおよびSSL証書を取得します
お名前.comでドメイン取得後,DNSレコードの設定から,AレコードにIPである111.22.333.444を設定
これでhttp://fuga.com にアクセスしても http://hoge.com と同様の内容が表示されることになります
SSL証明書の取得
openSSLを使ってSSL証明書を取得します
ざっくりとした流れは,
- サーバーの秘密鍵を作成
- 秘密鍵を使ってサーバー証明書を発行
- サーバー証明書を使ってSSL証明書の申請
となります
作成前にopenSSLをインストールしておきましょう
参考:https://qiita.com/Esfahan/items/4e2002f4a24589b2d0bf
インストールできたらサーバーへSSH接続しコマンドを打っていきます
秘密鍵作成とサーバー証明書の発行
まず各種ファイルを保存するディレクトリに移動しましょう
例) $ cd /etc/pki/tls/certs/hoge.com
実は下記のようなコマンドを打つことで,1と2は同時に実行可能です
$ openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
このコマンドの意味は,
*2048bitの秘密鍵をserver.keyとして作成し,それを使ってserver.csrというサーバー証明書を発行する
というものです
このコマンドを打つと,サーバー証明書発行に伴う情報を色々聞かれます
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Chiyoda
Organization Name (eg, company) [My Company Ltd]:fuga.inc
Organizational Unit Name (eg, section) []:dev
Common Name (eg, your name or your server's hostname) []:fuga.com
Email Address []:(入力しなくてOK、エンターのみ入力)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:(入力しなくてOK、エンターのみ入力)
An optional company name []:(入力しなくてOK、エンターのみ入力)
注意点は,Common Nameはだんのドメイン名にするということです
これで2つのファイルが作成されました
補足:秘密鍵にパスフレーズを設定することもできますが,取り扱いが煩雑になるため,今回はパスフレーズ未設定とします
SSL証明書
SSL証明書の取得方法はいくつかありますが,今回はさくらのSSL,JPRSドメイン認証型にします
https://ssl.sakura.ad.jp/
説明に従っていけば取得はすぐだと思います
先ほど発行したサーバー証明書を使用してください
問題なく発行できれば
server.crtというSSL証明書がダウンロードできると思います
JPRS_DVCA_G4_PEM.cerというファイルがダウンロードできました
この2つをサーバー内の管理しやすいディレクトリに設置しましょう
今回は先ほど同様/etc/pki/tls/certs/hoge.comへ入れました
VirtualHostの設定
NameVirtualHost *:443
<VirtualHost *:443>
ServerName fuga.com
Alias / /var/www/fuga.com
DocumentRoot /var/www/fuga.com
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3 -TLSv1
LoadModule ssl_module modules/mod_ssl.so
SSLCertificateFile /etc/pki/tls/certs/fuga.com/server.crt # SSL証明書
SSLCertificateChainFile /etc/pki/tls/certs/fuga.com/JPRS_DVCA_G4_PEM.cer #中間CA証明書
SSLCertificateKeyFile /etc/pki/tls/certs/fuga.com/server.key # 秘密鍵
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off
ProxyPass / https://fuga.com:5443
ProxyPassReverse / https://fuga.com:5443/
</VirtualHost>
この設定により,/(https:fuga.com)にアクセスした時に,https:fuga.com:5443の内容が表示されることとなります