いきなりですが、なんでなんすかねー。
無料の「Let’s Encrypt」があるのに、理解されずに有料のSSL証明書を利用する必要があるのは。
「SSL証明書をWebサーバーに設定する方法を知りたい」
「ブランドもののSSL証明書で安心してサイトをSSL化したい」
「『Let’s Encrypt』との違いを知りたい」
こんな悩みをお持ちのあなたのために「コピペ可能」なコード付きで解説します。
Apache、Nginx、Poundの3つのWebサーバー(OSはCentOSです)それぞれの設定方法と有効期限の更新方法も解説してます。
SSL証明書の作成と設定にフォーカスして説明してるよ。
- サーバーへSSHでの接続方法や、Linuxコマンドを理解している方向けの内容が含まれます。
- 「ドメイン認証SSL(DV SSL)」についての設定方法を解説しています
SSL3つの認証レベルについてはこちらの記事で解説しています。
![](https://tawasimusi.com/wp-content/uploads/2020/02/shutterstock_1190470054-320x180.jpg)
有料のSSL証明書について
数年前まではSSL証明書といえは、有料だったのです。
それが、「Let’s Encrypt」という素敵な無料SSL証明書サービスが利用できるようになりました。
そのため「有料」か「無料」かで呼び方をすみわけするようになったんですね。
「Let’s Encrypt」を使ったSSLの設定についてはこちらの記事で解説しています。
![ssl-settei](https://tawasimusi.com/wp-content/uploads/2020/02/shutterstock_1545663758-1-320x180.jpg)
SSL証明書にはドメインが必要
ドメインを取得してないなら、まずはドメインを取得しましょう。
ドメイン販売サイトから簡単に購入できます。
無料ドメインとかもありますが、僕はおすすめしません。
なぜなら、そのサービスいつまで続くかわかりませんので、テスト用とかじゃないかぎりは利用はやめときましょう。
ブログ開設などで利用する場合は、必ず独自ドメインを購入するようにしましょう。
おすすめは安心のGoogle Domainsです。
とにかく安く取得したいならお名前.comもいいですね。
他にも購入できるサイトは多々ありますが、上記がおすすめのサイトです。
NTTの名づけてネットとかもありますが、少し高いですね。
ドメイン名のドット以降をなににするか、迷うと思います。
僕のおすすめは「.com」ですね。
なぜなら、怪しくないでしょ。
※ドメインとグローバルアドレスの設定についてはここでは省かせていただきます。
これについては、ケースによって方法がいろいろあるので、ググって調べてください。
SSL証明書はいくらする?
有料といっても「ドメイン認証SSL(DV SSL)」の証明書は、安いです。
年間で1500円とかです。
高い証明書だと1万円以上のものもありますが、
僕の場合は、お客さん(ユーザー)がブランド物で担保されたい企業相手の場合に利用します。
こだわりがない場合や、それ以外は使わないですね。
「Let’s Encrypt」の方が自動更新ができて技術者目線だとすごい楽なんですよね。
有料SSL証明書は年単位で更新作業が必要なので。
値段の差でなにが違うのかといえば、対応しているブラウザの範囲が大きいか小さいかです。
とはいっても最近のブラウザはどれもほぼ対象なので、安い証明書でも問題ないです。
この点は自身で判断しましょう。
古いブラウザや、ニッチなブラウザも対応する必要があれば、費用の高いものを購入する必要があるでしょう。
今回は安価なSSLをおすすめします。
こちらが僕がいつも使う購入サイトです。
※安いだけあってこのサイト、スマホではうまく表示できないかもしれません。
この記事では一番安いCoreSSLを利用します。
Let’s Encryptもここで0円購入できるようですが、こちらの記事で自動更新方法も含めて解説してます。
![ssl-settei](https://tawasimusi.com/wp-content/uploads/2020/02/shutterstock_1545663758-1-320x180.jpg)
0円購入などしなくても、自分でできるので参照してください。
3種類のWEBサーバーの設定方法
![設定方法](https://tawasimusi.com/wp-content/uploads/2020/02/shutterstock_1029831787.jpg)
今回は、
を利用する場合の手順を解説します。
別のサイトで購入する場合でもやることはほぼ一緒です。
ドメイン名を「example.com」解説してます。
実際のあなたのドメインに置き換えて読んでください。
有料SSL証明書を発行する
下記手順を順番に説明します。
- ソルト作成
- 秘密鍵作成
- CSR作成
- SSL証明書を購入(購入時にCSRの貼り付け作業があります)
- ながくて数日。早くて数時間待つとメールでSSL証明書が発行されます。
- 中間証明書を作成
ソルト作成
僕がいつもやっている方法です。
ランダムな文字列を作成しています。
ここは例としてnginx.confをソルトとして設定していますが、ユニークになるソルトならなんでもいいです。
ちなみに、ソルトとは
暗号理論におけるソルトとは、パスワードやパスフレーズなどのデータをハッシュ化する際に、一方向性関数の入力に加えるランダムなデータのことである。
引用元:https://ja.wikipedia.org/wiki/ソルト_(暗号)
作業フォルダを今回は下記にしてますが、任意で変更してください。
(※root権限になっておきます。)
mkdir /etc/ssl/biz2020
cd /etc/ssl/biz2020
openssl md5 /etc/nginx/nginx.conf > rand.dat
opensslがない場合は
yum install -y openssl openssl-devel
でインストールしましょう。
秘密鍵作成
『2020key_org.pem』という名称で作成してます。
openssl genrsa -rand rand.dat -des3 2048 > 2020key_org.pem
パスフレーズ入力を2回促されるので、入力します。
(ここはコピペせず、ちゃんと自身で考えて入力してね。)
password-ha-daiji-2020
CSR生成
『2020csr.pem』という名称で作成してます。
openssl req -new -key 2020key_org.pem -out 2020csr.pem
先ほどのパスフレーズを促されるので間違えずに入力します。
password-ha-daiji-2020
ディスティングイッシュネーム情報を順に入力します。
下記のような感じで指定します。
コモンネームがドメイン名になるので、間違えないように。
コモンネームのあとのEmail Addressとかは空白でOKです。
Country Name | 国コード |
---|---|
State or Province Name | 都道府県 |
Locality Name | 市区町村 |
Organization Name | 組織名とかだけどなんでもいい |
Organizational Unit Name | 部署名とかだけどなんでもいい |
Common Name | コモンネーム(ドメイン名) |
こんな感じ↓
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Osaka
Locality Name (eg, city) []:Chuo-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:EXAMPLE Co.,ltd.
Organizational Unit Name (eg, section) []:Example System
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
秘密鍵をバックアップし、別の媒体に持っておきましょう。
(僕はこれ使ったことないですが、念のためらしいです。)
cp 2020key_org.pem 2020key_org.pem.bak
出来上がったCSRはこんな感じです。
-----BEGIN CERTIFICATE REQUEST-----
MIICvjCCAaYCAQAweTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBU9zYWthMRAwDgYD
VQQHEwdDaHVvLWt1MRkwFwYDVQQKExBFWEFNUExFIENvLixsdGQuMRcwFQYDVQQL
Ew5FeGFtcGxlIFN5c3RlbTEUMBIGA1UEAxMLZXhhbXBsZS5jb20wggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDScdN3w/hqClnXOjSEE0dCB64Ku7krRQF
tFhdvMOPWZ7/mb16GB4yuK1v75MU2mDN0H1zUKeeL9B5r4Bt/c52+i5re9DSBm1w
mZ6Z53KE6189cMX3twfhZLTMTsMEJyz+vfJv+GhbdPa38tZktvNV5RbgJ9YwjgUu
4+66/FLPjEIsn9Gg/FWmWNFIlOGqAklwxmdSPdH67EbT4HfwzWyFHQeEutS4vPHR
uGopkzmQoXD2nOXvRRJHT22x9tKM72L/ROzpy6sEMNS3yMKyPQDKiBnY1JAuryLQ
dY9bUE5kaFkrg4JBH34CdMJlb6/vJSLCKO34Z3tzY7naLOd7ZdlLAgMBAAGgADAN
BgkqhkiG9w0BAQUFAAOCAQEACktRt6GAwa33qvuVQPq0DrcUjTEvVKFHyJkadcGJ
rzDb8dEhSpLxEbaGMt2yDPXajA8hh8cISnB7Ouls1LheEWV8bIfrXos2cbZN47cj
I0/jtbPUDrC3C3E/dFt4wFNOvqJ4ESytfoIYL9HGjw9bIramgiEOxeT0RUBmpFNg
25Y0rcY4/s3aY0MugKcdBBA/dpp2rH4ClrB0gtxs2oXXor3WvMjAH9Ki3EPGG6Q0
clSvZmYFYAE4lzbj9YuxqB8QtWVkMCOAf1kuZ5yfaCtGvTXt14tmIrsl3DoFtBut
FDw+NuaYqWq+MQ4SWXojFeT3/3UazY+Tbe+eDqxBnorXDA==
-----END CERTIFICATE REQUEST-----
SSL証明書を購入
※購入時にCSRの貼り付け作業があります。
SSLボックスが始めてなら、ユーザー登録します。
ログイン後、購入したいSSL証明書を選択し(ここ税込み表示になるから高くなった感めっちゃありますよね。)
支払方法入力と、利用規約をチェックします。
購入確定後、取得申請フォームが表示されるので、「他社サーバーで利用する」を選択すること。
- コモンネーム(ドメイン名)
- 署名アルゴリズム(SHA-2でOK)
- CSR
![SSL BOX](https://tawasimusi.com/wp-content/uploads/2020/05/sslbox-2020051902.png)
それぞれを入力し、登録します。
CSRは↓
-----BEGIN CERTIFICATE REQUEST-----
から
-----END CERTIFICATE REQUEST-----
までの内容をそのままコピペします。
次に進むと、CSRの内容と、申請者の情報入力画面が表示されます。
- 承認用メールアドレス
- 組織名
- 役職
- 郵便番号
- 国コード
- 都道府県
- 市区町村
- 住所
- 電話番号
- FAX番号
- メールアドレス
をそれぞれ入力し、次へ進んで、最終確認後、登録して完了です。
イメージが見たい場合は、SSLボックス内のマニュアル で確認できるので見てください。
SSL証明書発行までは長くて数日、早くて1,2時間待つとメールでSSL証明書が発行されます。
承認用メールアドレス宛にSSL証明書が送付されます。
ちなみにSSL証明書は
-----BEGIN CERTIFICATE-----
MIIGdDCCBVygAwIBAgIQILJGgDIGGzDyOSFbrVnhvDANBgkqhkiG9w0BAQsFADBh
省略(30行以上あるよ)
m6qK5kpTLWjb+2OaVVvDjdR4iYcOHo4I
-----END CERTIFICATE-----
のような文字列です。
vi 2020cert.pem
で届いた内容をそのまま貼り付けて作成します。
あとは、これをWEBサーバーに設定します。
中間証明書を作成
そのまえに、中間証明書をコピーしておきます。
CORE SSLの場合は、ここの「SHA-2の証明書をご利用の場合」の中間証明書をそのままコピーして、作成します。
-----BEGIN CERTIFICATE-----
MIIF6zCCA9OgAwIBAgIQFJx2uEGduVODYGLKRraNNjANBgkqhkiG9w0BAQwFADCB
省略(30行以上あるよ)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
省略(30行以上あるよ)
0fKtirOMxyHNwu8=
-----END CERTIFICATE-----
のような文字列です。
vi 2020inca.pem
そのまま、貼り付けるだけです。
Apacheでの設定方法(CentOS編)
CentOS 7 + Apache 2.4での解説です。
mod_sslパッケージのインストール
yum install -y mod_ssl
既にインストール済みの場合は、その旨のメッセージが表示されます。
証明書に中間証明書を追記します。
※Apache httpdのバージョンが2.4.8以降の場合のみ。
cat 2020inca.pem >> 2020cert.pem
これでできあがり。
SSL証明書をそのままサーバーに設定してもいいし、運用を考えると
cp /etc/ssl/biz2020/2020cert.pem /etc/ssl/cert.pem
秘密鍵もコピー
cp /etc/ssl/biz2020/2020key.pem /etc/ssl/key.pem
中間証明書もコピー
cp /etc/ssl/biz2020/2020inca.pem /etc/ssl/inca.pem
として、来年の更新時に証明書を上書きするだけで、サーバーの設定を変更しなくていいようにするのもありです。
来年同じ作業を行うときは、2020を年度にしてるので、そこを変更して実行すればいいです。
vhost-ssl.confの設定
vi /etc/httpd/conf.d/vhost-ssl.conf
※環境によってパスは変わります。
以下のように設定を追加します
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/cert.pem # SSL証明書のパス
SSLCertificateChainFile /etc/ssl/inca.pem # 中間証明書のパス
SSLCertificateKeyFile /etc/ssl/key.pem # 秘密鍵のパス
または、Apacheが2.4.8以降のバージョンであれば中間証明書はまとめてるので下記にします。
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/cert.pem # SSL証明書+中間証明書のパス
SSLCertificateKeyFile /etc/ssl/key.pem # 秘密鍵のパス
Apacheを再起動します
systemctl restart httpd
これで、あなたのサイトにアクセスし、https://example.com アドレス部分に鍵マークが表示されていれば成功です。
Nginxでの設定方法(CentOS編)
CentOS 7 + Nginx 1.17 での解説です。
前提として、NginxでSSLを利用するには “-with-http_ssl_module” 付きでコンパイルしてインストールしておく必要があります。
証明書に中間証明書を追記します。
cat 2020inca.pem >> 2020cert.pem
これでできあがり。
SSL証明書をそのままサーバーに設定してもいいし、運用を考えると
cp /etc/ssl/biz2020/2020cert.pem /etc/ssl/cert.pem
秘密鍵もコピー
cp /etc/ssl/biz2020/2020key.pem /etc/ssl/key.pem
として、来年の更新時に証明書を上書きするだけで、サーバーの設定を変更しなくていいようにするのもありです。
来年同じ作業を行うときは、2020を年度にしてるので、そこを変更して実行すればいいです。
nginx.confを設定
vi /etc/nginx/nginx.conf
※環境によってパスは変わます。
以下のように該当箇所に設定を追加します。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
server {
listen 443;
ssl on;
server_name example.com;
ssl_certificate /etc/ssl/cert.pem # SSL証明書+中間証明書のパス
ssl_certificate_key /etc/ssl/key.pem # 秘密鍵のパス
Nginxを再起動します。
systemctl restart nginx
これで、あなたのサイトにアクセスし、https://example.com アドレス部分に鍵マークが表示されていれば成功です。
Poundでの設定方法(CentOS編)
CentOS 7 + Pound 2.6 での解説です。
ググってもPoundサーバーってあまり記事でてこないけど、ロードバランサーとして優秀です。
ApacheやNginx+Tomcatなどと使うと便利なサーバーです。
SSL証明書に鍵情報を追記します。
cat 2020key.pem >> 2020cert.pem
SSL証明書に中間証明書を追記します。
cat 2020inca.pem >> 2020cert.pem
これでできあがり。
SSL証明書をそのままサーバーに設定してもいいし、運用を考えると
cp /etc/ssl/biz2020/2020cert.pem /etc/ssl/cert.pem
として、来年の更新時に証明書を上書きするだけで、サーバーの設定を変更しなくていいようにするのもありです。
来年同じ作業を行うときは、2020を年度にしてるので、そこを変更して実行すればいいです。
pound.cfgを設定
vi /etc/pound.cfg
※環境によってパスは変わります。
以下のように該当箇所に設定を追加します。
ListenHTTPS
Address XXX.XXX.XXX.XXX
Port 443
Cert "/etc/ssl/cert.pem" # SSL証明書+中間証明書+秘密鍵のパス
End
Poundを再起動します。
systemctl restart pound
これで、あなたのサイトにアクセスし、https://example.com アドレス部分に鍵マークが表示されていれば成功です。
有効期限と更新作業
![自動更新設定](https://tawasimusi.com/wp-content/uploads/2020/02/shutterstock_130566071.jpg)
有料の証明書は有効期限が1年単位が基本です。
2年更新とかもあります。
有効期限が切れる数か月前に同じ作業をして、都度更新作業を行う必要があります。
証明書の有効期限が近づいてくると、更新通知が送付されます。
![SSLBOX 管理画面](https://tawasimusi.com/wp-content/uploads/2020/05/sslbox-2020051903.png)
SSLボックスの場合は、メンバー管理ツールの「SSLボックス管理」上より更新手続を選んで、新規登録時と同じ作業を行ってください。
ユウキでした。