HTTPS通信をしたい
HTTPSでWebサイトを表示させたいことはあると思います。
一応一昔前から無料でSSL証明書を発行できるサービスもあったのですが、ちょっと手間だったり、更新が面倒くさかったりします。
しかし、無料でSSL証明書を発行してくれるLet's Encryptはそこら辺結構簡単(準備ができればコマンド一発)だったりするので、ConoHaで使えるようにしたいと思います。
状況は以下です。
- OSはCentOS 7
- ドメイン
example.com
を持っているが、すでに色々設定しているため、conoha.example.com
をConoHaに割り当てて使いたい - 証明書だけほしい
- ApacheではなくNode.JSなどでHTTPS通信させたいなど。
Apacheだったりドメイン管理を全部ConoHaに任せきりにするなら、もう少し簡単な記事があるはずなので、そちらを参照してください。
下準備
ドメインの設定
ConoHaの提供するDNSで特定のドメインを管理できるようにしておく必要があります。
ドメイン全てをConoHaで管理する場合は他の記事で紹介してるので探してください。
もし example.com
を取得して色々使っていて、conoha.example.com
以下だけをConoHaの管理下に置きたい場合は、レジストラにNSレコードを追加してください。
追加するのは以下です。
ns-a1.conoha.io.
ns-a2.conoha.io.
ns-a3.conoha.io.
Value-Domainの場合
追加の仕方は各レジストラで異なると思うので、今回はValue-Domainの例を書いておきます。
ログインしていなければログイン。
ログインしていればコントロールパネルに移動します。
そこから無料ネームサーバー→ドメインのDNS設定とページを移動し、契約中のドメインのDNSを編集してください。
後は以下のNSレコードを追加すれば終了です。
ns conoha ns-a1.conoha.io.
ns conoha ns-a2.conoha.io.
ns conoha ns-a3.conoha.io.
これで conoha.example.com
への問い合わせはConoHaのDNSに向かいます。
ちゃんと指定のドメインでVPSにアクセスできるようになれば大丈夫です。
ConoHaの設定
ConoHaは次のようにドメインを設定します。
DNSにドメイン追加
管理ページログイン後、左メニューのDNSに入り、ドメインを追加します(今回は conoha.example.com
)。
ドメイン名を入力するだけで追加は可能です。
追加されたら、次のレコードを登録します。
タイプ | 名称 | TTL | 値 |
---|---|---|---|
A | @ | 3600 | IPアドレス |
逆引き設定
次に逆引きの設定もしておきます。
左メニューのサーバーから、設定するVPSの設定を開きます。
VPS設定の中に、PTRレコードなるものがあります。
ここのIPv4に設定するドメイン(今回は conoha.example.com
)を追加します。
これでConoHa側の設定は終わりです。
DNSの設定
これで完了です。
反映完了までしばらく待ちましょう。
digコマンドでレジストラのDNSに問い合わせをするなどで確認も可能です。
大雑把に以下のような結果になっていれば大丈夫です。
;; ANSWER SECTION:
conoha.example.com. 3539 IN A IPアドレス
;; AUTHORITY SECTION:
conoha.example.com. 59 IN NS ns-a1.conoha.io.
conoha.example.com. 59 IN NS ns-a3.conoha.io.
conoha.example.com. 59 IN NS ns-a2.conoha.io.
無事ドメインの設定が完了し、SSHなどで接続できるようになったら次の作業に移ります。
ポート開放
ConoHaは最初Firewallでほとんどの通信が切られています。
証明書の特にhttp/https(80/443)ポートの開放が必要なので、開放します。
ポート確認
以下コマンドで現状を把握します。
firewall-cmd --list-all
多分初期状態だと以下のようになっているはずです。
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
HTTP/HTTPS通信の有効化
1,2行目のコマンドはroot権限が必要なので、一般ユーザーの場合は sudo を付けてください。
firewall-cmd --permanent --add-service=http --zone=public
firewall-cmd --permanent --add-service=https --zone=public
firewall-cmd --reload
確認
再度確認します。
firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client http https ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
servicesのところに、http
と https
が追加されていれば完了です。
必要なアプリケーションとか
次に必要なものをインストールします。
面倒なのでroot権限で作業します。
yum install epel-release
yum install certbot python-certbot-apache
証明書の入手
めんどうなのでroot権限で作業します。
適当な作業ディレクトリを作ってそこに移動してください。
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt/
ここで次のようなコマンドを実行して、証明書を入手します。
コマンド実行前に、Webサーバーが起動している場合は、一度終了しておいてください。
./letsencrypt-auto certonly --standalone --email your@email.address -d conoha.example.com
--email
にはあなたのメールアドレスを指定してください。
-d
には発行するドメインを指定してください。
実行後、次のように表示されれば成功です。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/conoha.example.com/fullchain.pem. Your cert
will expire on 2017-02-17. To obtain a new or tweaked version of
this certificate in the future, simply run letsencrypt-auto again.
To non-interactively renew *all* of your certificates, run
"letsencrypt-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
これで /etc/letsencrypt/live/conoha.example.com/
に証明書がダウンロードされます。
最後に
証明書の取得ができる状態までもってこれれば、後は更新もできるでしょう。
大雑把に証明書周りのファイルを見たところ、シンボリックリンクで本体は別のところにあるので、更新しても同じパスでアクセスできるようになっているようです。