WEBアプリのテストで使えるオレオレ証明書を作る(サーバー:Linux、クライアント:MacOS)

2025年1月19日日曜日

Linux

t f B! P L

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の設定を開き、[プライバシーとセキュリティ] → [セキュリティ] → [証明書の管理]を選択します。

Chromeの証明書の管理を開く

[MacOSからインポートした証明書を管理する]を選択します。 MacOSからインポートした証明書を管理するを選択

[キーチェーンアクセスを開く]を選択します。 キーチェーンアクセスを選択

キーチェーンアクセスのメニューから、[読み込む]を選択します。 キーチェーンアクセスのメニューから読み込むを選択

Linux側で作成したサーバー証明書を選択します。 作成したサーバー証明書をMacOSのキーチェーンアクセスにインポート

一覧から読み込んだ証明書をダブルクリックし、証明書の詳細を開きます。 そして、[信頼] → [この証明書を使用するとき] の部分を「常に信頼」に変更します。 証明書を常に信頼に設定する

クライアント(MacOS)環境のhostsファイル編集

hostsファイルはシステム領域に配置されているため、管理者権限で編集する必要があります。以下のコマンドを入力してファイルを開きます。

sudo vi /private/etc/hosts

以下を追記します。 IPアドレス・ドメイン名は環境に合わせて適宜変更してください。

172.16.121.121  test-domain.com

動作確認

クライアント側でSafari or Chromeを開き、httpsのURLでアクセスして、証明書のエラーなく表示されるか確認しましょう。 クライアント側でSafari or Chromeを開きhttpsで表示されるか確認

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ