ゲームサーバーのSSL対応について
こんにちは
こないだ、ハバネロにHTTPS対応を入れましたが
そろそろSSLキーの更新日が近づいたので
SSL対応プロセスについてブログに記録しておきます。
そろそろSSLキーの更新日が近づいたので
SSL対応プロセスについてブログに記録しておきます。
(ハバネロサイトのSSLはGAEが提供しているので
ここで話すのはゲームサーバー側のSSL対応です。)
ここで話すのはゲームサーバー側のSSL対応です。)
昔はブラウザーが信頼できるSSLを使用するため
有料SSL発行サービスを利用したようですが、
今はLet's Encryptで無料SSLが使えます。
有料SSL発行サービスを利用したようですが、
今はLet's Encryptで無料SSLが使えます。
GCEインスタンスにSSLを対応するため
certbotを設置します。
certbotを設置します。
以下のサイトで設置方法が書かれています。
僕の場合ゲームサーバーとの通信で利用しているので
ウェブサーバーは無しを選び、インスタンスのOSは
VMに設置されているDebian10を洗濯します。
ウェブサーバーは無しを選び、インスタンスのOSは
VMに設置されているDebian10を洗濯します。
ちなみに、自分のOS種類を確認するコマンドは以下です。
> cat /etc/issue
Debian GNU/Linux 10 \n \l
Debian GNU/Linux 10 \n \l
以下のコマンドでcertbotを設置します。
> sudo apt-get install certbot
僕はブラウザーとsocketとの通信のため
必要な証明書を発行するのが目的なので
standaloneオプションを使います。
必要な証明書を発行するのが目的なので
standaloneオプションを使います。
> sudo certbot certonly --standalone
SSLを適用するドメインを入力します。
Please enter in your domain name(s) (comma and/or space separated)
(Enter 'c' to cancel): gameserver.habanero.jp
(Enter 'c' to cancel): gameserver.habanero.jp
GCEインスタンスの場合、基本的に
apacheが起動されているので
エラーが発生する時がありますが、
その時はapacheを終了させで再実行します。
apacheが起動されているので
エラーが発生する時がありますが、
その時はapacheを終了させで再実行します。
> sudo service apache2 stop
証明書の発行が成功すると、このメッセージが出ます。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/gameserver.habanero.jp/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/gameserver.habanero.jp/privkey.pem
Your cert will expire on 2020-10-22. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot 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
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/gameserver.habanero.jp/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/gameserver.habanero.jp/privkey.pem
Your cert will expire on 2020-10-22. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot 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
これで2つの認証ファイルが生成されます。
privkey.pem
fullchain.pem
fullchain.pem
socket.ioでこの認証書を使ってhttps接続に変えます。
var fs = require("fs");
var options = {
key: fs.readFileSync("./config/privkey.pem"),
cert: fs.readFileSync("./config/fullchain.pem")
};
var https = require("https").createServer(options, function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Openchat server (SSL)');
});
io = require('socket.io')(https);
https.listen(port, function () {
console.log('listening on ' + port + ' (SSL)');
});
...
var options = {
key: fs.readFileSync("./config/privkey.pem"),
cert: fs.readFileSync("./config/fullchain.pem")
};
var https = require("https").createServer(options, function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Openchat server (SSL)');
});
io = require('socket.io')(https);
https.listen(port, function () {
console.log('listening on ' + port + ' (SSL)');
});
...
サイトでゲームを起動すると、httpsで接続しても
通信が正常に行われます。
通信が正常に行われます。
基本的にcerbotは自動更新が行われますが
僕の場合SSLキーの格納場所が別にあるので
configで設定を少し変えした。
僕の場合SSLキーの格納場所が別にあるので
configで設定を少し変えした。
vi /etc/letsencrypt/renewal/gameserver.habanero.jp.conf
# renew_before_expiry = 30 days
archive_dir = /etc/letsencrypt/archive/gameserver.habanero.jp
cert = /etc/letsencrypt/live/gameserver.habanero.jp/cert.pem // ここを変更
privkey = /etc/letsencrypt/live/gameserver.habanero.jp/privkey.pem // ここを変更
chain = /etc/letsencrypt/live/gameserver.habanero.jp/chain.pem // ここを変更
fullchain = /etc/letsencrypt/live/gameserver.habanero.jp/fullchain.pem // ここを変更
...
# renew_before_expiry = 30 days
archive_dir = /etc/letsencrypt/archive/gameserver.habanero.jp
cert = /etc/letsencrypt/live/gameserver.habanero.jp/cert.pem // ここを変更
privkey = /etc/letsencrypt/live/gameserver.habanero.jp/privkey.pem // ここを変更
chain = /etc/letsencrypt/live/gameserver.habanero.jp/chain.pem // ここを変更
fullchain = /etc/letsencrypt/live/gameserver.habanero.jp/fullchain.pem // ここを変更
...
自動更新の動作確認は以下のコマンドで可能です。
> sudo certbot renew --dry-run
コメント
コメントを投稿