WEBアプリの開発段階では、https通信を試す際に正規の証明書が提供されない場面が少なくありません。その結果、ブラウザの警告に悩まされたり、テストの効率が低下することも。本記事では、そんな課題を解決するためにLinuxサーバーでオレオレ証明書を作成し、MacOSクライアントで安全に利用する方法を解説します。簡単な手順でSSL通信を実現し、開発効率を向上させるためのノウハウをお届けします!
前提条件
・openssl
はインストールされている前提です。
・WEBサーバーはLinux + Apacheを使用します。
・クライアント環境はMacOSを使用します。
・オレオレ証明書に設定するドメイン名と、サーバー側のIPは以下を想定した内容となっています(環境に合わせて適時読み替えてください)
項目 | 内容 |
---|---|
ドメイン | test-domain.com |
サーバー側のIP | 172.16.121.121 |
証明書の作成
サーバー環境(Linux)で証明書を作成します。
SAN(Subject Alternative Name)の設定を作成
Google Chromeで証明書エラーが出ることへの対策に、Subject Alternative Name (SAN)の拡張領域を定義するテキストファイルを作成します。
今回は、test-domain.com
というドメイン名でオレオレ証明書を作成します。他のドメイン名で作成する場合は、適時読み替えてください。
echo "subjectAltName = DNS:test-domain.com, IP:172.16.121.121" > subjectnames.txt
秘密鍵・署名要求・サーバー証明書を作成する
次の3つのコマンドを使用して、秘密鍵・署名要求・サーバー証明書を作成します。
# 秘密鍵(server.key)を生成する
openssl genrsa 2048 > server.key
# 署名要求(server.csr)を生成する
# your-domain.comは自身の環境に合わせて変更してください。
openssl req -new -key server.key -subj "/C=JP/ST=Some-State/O=Some-Org/CN=test-domain.com" > server.csr
# サーバ証明書(server.crt)を作成する
openssl x509 -days 3650 -req -extfile subjectnames.txt -signkey server.key < server.csr > server.crt
ApacheのSSL設定
サーバー環境(Linux)でApacheの設定を行います。
作成した証明書をApacheの設定フォルダへコピー
上で作成した秘密鍵・サーバー証明書の2つのファイルを、Apacheのフォルダへコピーします。
cp /path/to/dir/server.key /etc/httpd/conf.d
cp /path/to/dir/server.crt /etc/httpd/conf.d
SSLの設定
ApacheでSSL通信するためにはSSLモジュールが必要です。
以下のコマンドでmod_ssl
をインストールします。
sudo dnf install mod_ssl -y
SSL用の設定を編集します。以下のファイルを開きます。
vi /etc/httpd/conf.d/ssl.conf
ssl.conf
の中から次の4つの項目を探して、以下のように編集します。
DocumentRoot "/var/www/html"
ServerName test-domain.com:443
SSLCertificateFile /etc/httpd/conf.d/server.crt
SSLCertificateKeyFile /etc/httpd/conf.d/server.key
ファイアウォールの設定
ファイアウォールの設定で、HTTPとHTTPSで使用するポートを開放します。
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
サービスの再起動
httpdサービスを再起動します。
sudo systemctl restart httpd
クライアント(MacOS)環境に証明書をインストール
クライアント(MacOS)側に、サーバー証明書をインストールします。
Chromeの設定を開き、[プライバシーとセキュリティ] → [セキュリティ] → [証明書の管理]を選択します。
[MacOSからインポートした証明書を管理する]を選択します。
[キーチェーンアクセスを開く]を選択します。
キーチェーンアクセスのメニューから、[読み込む]を選択します。
Linux側で作成したサーバー証明書を選択します。
一覧から読み込んだ証明書をダブルクリックし、証明書の詳細を開きます。
そして、[信頼] → [この証明書を使用するとき] の部分を「常に信頼」に変更します。
クライアント(MacOS)環境のhostsファイル編集
hosts
ファイルはシステム領域に配置されているため、管理者権限で編集する必要があります。以下のコマンドを入力してファイルを開きます。
sudo vi /private/etc/hosts
以下を追記します。 IPアドレス・ドメイン名は環境に合わせて適宜変更してください。
172.16.121.121 test-domain.com
動作確認
クライアント側でSafari or Chromeを開き、httpsのURLでアクセスして、証明書のエラーなく表示されるか確認しましょう。
0 件のコメント:
コメントを投稿