自分のパソコンやテスト用のサーバーでWebサイトを開発しているとき、ブラウザに「保護されていない通信」という警告が出て、少し気になったことはありませんか?
これは、通信が暗号化されていない「http」でアクセスしているのが原因です。これを解決するのが「SSL化(https)」ですが、公開サイトで使うような証明書は、開発環境のためだけに用意するのは少し面倒ですよね。
そこで今回は、自分だけの「認証局」を作って、開発環境で使えるオリジナルのSSL証明書を発行する方法を、初心者の方にも分かりやすく解説します!これを導入すれば、開発環境でもブラウザに鍵マークが表示され、本番環境とほぼ同じ状態でテストができるようになります。
✅ 「認証局」ってなに? なぜ必要なの?
SSL証明書は、Webサイトの「身分証明書」のようなものです。そして「認証局(CA)」は、その身分証明書を発行してくれる、信頼できる公的機関(市役所のようなイメージ)です。
- 公的な認証局: Let’s Encryptなど。世界中のブラウザが「この機関が発行した証明書は信頼できる」と知っています。
- 自前の認証局 (プライベートCA): 今回作るのはこちら。「うちの会社(または自分)の中では、この機関が発行した証明書を信頼する」というルールを自分で作ります。
開発環境では、この「自前の認証局」を作り、自分のパソコンに「この認証局は信頼できるよ」と教えてあげることで、SSLの警告を消すことができるのです。
ステップ1:認証局の親玉「ルートCA」を作ろう!
まず、すべての信頼の源となる、一番偉い「ルート認証局 (Root CA)」を作ります。これは、いわば証明書発行センターの本社を設立するようなものです。作業はLinuxサーバーのコマンドラインで行います。
サーバーにログインし、以下のコマンドを順番に実行して、ルートCAを作成します。
# 準備:設定ファイルや専用のスクリプトを用意します
cd /etc/pki/tls
mkdir RCA
cp openssl.cnf openssl_rca.cnf
# (viなどでopenssl_rca.cnfのパスをRCAに変更)
cd /etc/pki/tls/misc/
cp CA RCA
# (viなどでRCAスクリプト内のパスをRCA用に変更)
# ルートCAの作成コマンドを実行!
/etc/pki/tls/misc/RCA -newca
コマンドを実行すると、国コード(JP)や会社名、認証局の名前などを聞かれるので、分かりやすい名前を入力しましょう。これが、あなたの認証局の「表札」になります。
ステップ2:Webサーバー用の「サーバ証明書」を発行しよう
認証局ができたので、次にWebサーバーに設置する「身分証明書」そのものであるサーバ証明書を発行します。これはいわば、本社から支店へ証明書を発行するイメージです。(※厳密にはセキュリティを高めるために「中間認証局」を挟みますが、ここでは手順を簡略化して解説します)
1. サーバーの「秘密の鍵」と「発行依頼書(CSR)」を作成
Webサーバーを置く場所で、以下のコマンドを実行します。
mkdir /etc/httpd/ssl/
cd /etc/httpd/ssl/
# 秘密の鍵を作成
openssl genrsa -out server.key 2048
# 発行依頼書(CSR)を作成
openssl req -new -key server.key -out server.csr
CSR作成時、「Common Name」には必ず、開発で使うサーバーのホスト名(例: `dev.example.com`)を入力してください。
2. 認証局で署名して、証明書を完成させる
作成した発行依頼書(`server.csr`)を、先ほどルートCAを作ったサーバーに持って行き、「署名」をしてもらいます。
# (CSRファイルの中身を、認証局サーバーの newreq.pem として保存)
# 署名コマンドを実行!
/etc/pki/tls/misc/ICA -sign
これで、晴れてWebサーバー用の証明書が完成しました!
ステップ3:Webサーバーに証明書を設置&PCに認証局を登録
最後のステップです。完成した証明書をWebサーバーに設置し、自分のパソコンに「この認証局は信頼できるよ」と登録します。
1. Apacheに証明書を設定
Webサーバーの設定ファイル(ssl.confなど)に、作成したファイルの場所を記述します。
SSLCertificateFile /etc/httpd/ssl/server.crt # サーバ証明書
SSLCertificateKeyFile /etc/httpd/ssl/server.key # サーバの秘密鍵
SSLCertificateChainFile /etc/pki/tls/ICA/ica.crt # (中間CA証明書)
2. 自分のPCにルートCA証明書をインポート【最重要!】
ステップ1で作成したルート認証局の証明書(`/etc/pki/tls/RCA/rca.der`)を自分のPCに持ってきて、OSやブラウザの「信頼されたルート証明機関」にインポートします。この作業を行うことで、初めてブラウザの警告が消えます!
まとめ
お疲れ様でした!少し複雑な手順でしたが、これであなたも自分だけの認証局を持つことができました。開発環境でブラウザの警告に悩まされることなく、より本番に近い環境でスムーズに開発を進めることができます。ぜひ挑戦してみてください!
コメント