前の記事では、Ubuntu ServerのサンプルSSL証明書を使ったApacheのSSL通信を試してみた。今度は実際の運用ができるように、公式のSSL証明書(CoreSSL)を取得し、正規にSSL通信できるようにしたので備忘録を残す。
国内の格安SSL証明書
初めてSSL証明書を取得するので、日本語の説明で安い所を探していた。
SSLボックス(CoreSSL) が3年で790円/年で出ていたので、そこに決めた。対応ブラウザも一般的に使われているブラウザとスマホ携帯にも対応。
コモンネームの準備
今から証明書を発行して貰おうとするサイトのURL(FQDN)。ドメイン名は前記事で紹介したように「お名前.com」で取得。そのドメイン名に「www」をつけたものをコモンネームとする。wwwで申請するとwwwなしのURLも利用できると説明があった。
例) www.sample.com
承認用メールアドレスの準備
SSL証明書発行の際には、登録するドメインの管理者本人であると証明するために、メールによる承認手続きが必要。承認メールアドレスは、下記のどちらかに沿うものが必要。
- ドメイン名のWOIS情報(登録者情報)に登録されているメールアドレス
- ドメイン名を用いたメールアドレス(
admin@ドメイン名
など)
運用予定のUbuntuサーバに postfix
メールサービスを立ち上げ、ドメイン名のメールアドレスを受け取れるようにした。
このメールサーバの設定要領については、以下の記事で紹介。
CSR(Certificate Signing Request)の作成
正規のSSL証明書を発行してもらうために、CSRを作成する必要がある。まずはサーバ上でopoensslコマンドを使って秘密鍵を作成する。
尚、作成手順はSSLBOXのヘルプ 参考1)と、参考2)の情報が参考になった。
1)秘密鍵の作成
Ubuntuサーバ上の、任意のフォルダ(私はホームディレクトリ)で下記コマンドを実行し、秘密鍵(wwwsamplecom.key
)を作成。
$ openssl genrsa -out wwwsamplecom.key 2048
Generating RSA private key, 2048 bit long modulus
.........................................................................................+++
...................+++
e is 65537 (0x10001)
2)CSRの作成
作成した秘密鍵から、CSR(wwwsamplecom.csr
)を生成。
$ openssl req -new -sha256 -key wwwsamplecom.key -out wwwsamplecom.csr
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]:Hiroshima
Locality Name (eg, city) []:Hiroshima
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Personal
Organizational Unit Name (eg, section) []:None
Common Name (e.g. server FQDN or YOUR name) []:www.sample.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
生成された、CSRファイルの内容を「SSL BOX」サイトでの申請に使う。
尚、秘密鍵のファイルはサーバにインストールして使い重要なファイルなので保管しておく。
SSL証明書の取得手続き
「SSL BOX」サイトから、トップ > サポート > サポートマニュアル > 新規取得お申し込み の説明に従い手続きをする。尚、予めネットウオルに会員登録し代金分のプリペイドを支払っておく必要がある。
ネットオウルにログインし、メンバー管理ツールの SSLボックス管理→新規取得→「その他のサーバで利用する」 から手続きをする。
下記の画面になるので、必要項目を入れて暗証番号を入力しプリペイドの支払いをして進める。
続いて、CSRを生成する情報などを入力
- コモンネーム(FQDN): Ex. www.sample.com
- 国: JP
- 都道府県: Ex. Hiroshima
- 市区町村: Ex. Hiroshima
- 組織: Ex. Presonal
- 部署: Ex. None
続いて、コモンネームと、生成したCSRを貼り付ける。
最後に、申請登録情報を入力。ここで、準備しておいた承認用メールアドレスを選択。
必要事項の記入を終えたら「次へ進む」をクリックして、取得申請完了!
承認用メールでの承認確認
しばらくすると、承認用メールアドレス宛てに承認確認メールが届く。そこに記載されているURLにアクセスして、メールに書かれてる“validation code”を入力して完了。
承認が終わると、SSL証明書がメールで送られてくる。(10分後くらいにメールが送られてきた)
補足)
- 申請時に、承認用アドレスは幾つかのフォームから選ぶ。もし間違って指定してしまった場合は、SSLボックスの管理画面から修正できる。実は、最初メールアドレスに「www」まで含めたアドレスを選択してしまってたようで、メールが来なくて確認したら間違っていた。訂正して再送ボタンを押すとすぐに確認メールが届き、無事に証明書を発行して貰えた。
SSL証明書と中間証明書の取得
ネットオウルにログインし、SSLボックスの「管理画面」から、SSL証明書と中間証明書がダウンロードできる。
ダウンロードしたファイルをそれぞれ、下記のような名前のファイルに保存し、Ubuntuサーバに転送。
- SSL証明書:
wwwsamplecom.crt
- 中間証明書:
coressl-intermedicate.crt
SSL証明書関連ファイルをサーバに設置
関連ファイルはホームディレクトリに置いてあるとして説明。
1)秘密鍵ファイルを /etc/ssl/private/ ディレクトリにコピー
$ cd /etc/ssl
$ sudo cp ~/wwwsamplecom.key .
$ sudo chown root:ssl-cert wwwsamplecom.key
$ sudo chmod 640 wwwsamplecom.key
$ sudo mv wwwsamplecom.key private/
2)取得したSSL証明書と中間証明書ファイルを /etc/ssl/certs/ ディレクトリにコピー
$ cd /etc/ssl
$ sudo cp ~/wwwsamplecom.crt certs/
$ sudo cp ~/coressl-intermedicate.crt certs/
Apacheの設定
Apacheのバーチャルホストの設定ファイルに、証明書関連のファイル名を記述。
Ubuntuにデフォルトでインストールされている default-ssl.conf
ファイルを修正。
$ cd /etc/apache2/sites-available/
$ sudo nano default-ssl.conf
下記部分を修正
SSLCertificateFile /etc/ssl/certs/wwwsamplecom.crt
SSLCertificateKeyFile /etc/ssl/private/wwwsamplecom.key
SSLCertificateChainFile /etc/ssl/certs/coressl-intermedicate.crt
設定の確認後、SSLモジュールとバーチャルホストの有効化
$ sudo a2enmod ssl
$ sudo a2ensite default-ssl
$ sudo apache2ctl configtest
$ sudo service apache2 restart
ルータの設定
443ポートが外部からアクセスできるように、ルータの静的マスカレードを設定。
Webブラウザで表示確認
https://www.sample.com/
で表示。
緑色の鍵マークが表示、やった〜〜!!
所感
作業を開始してから数時間でSSL証明書が取得でき、素直に表示できた。素晴らしい!!調べてみると、httpよりhttpsの方がデータ圧縮されてプロトコルが簡素化するので表示速度が早くなるの事。
個人サイトにSSLまで必要か?とも思ったが、実際使ってみると、体感できるほど表示レスポンスが向上した事、WordPressやGitLabなどの管理画面にログインする時のパスワードも暗号化されていると思うと安心して使える。それは閲覧する人にとっても安心感に繋がる。これで年間790円程度なら良いと思う。
次はWordPressやGitLabをSSL化していく。後日の記事で紹介。
コメント