[Linux]自己証明書による HTTPS 接続
公開日:2025-11-30
更新日:2025-11-30
更新日:2025-11-30
1. 概要
自己証明書を使って、HTTPS で接続できるようにします。
Webサーバは Nginx を使用します。
httpd と PHP を連携するようにしている場合は、「Nginx と PHP の連携」の設定をして、Nginx を使うように変更します。
Webサーバは Nginx を使用します。
httpd と PHP を連携するようにしている場合は、「Nginx と PHP の連携」の設定をして、Nginx を使うように変更します。
2. ダミーのドメインの設定
Windows のスタートメニューで右クリックをして、「ターミナル(管理者)」をクリックして、PowerShell を管理者権限で起動します。
次のコマンドでメモ帳で hosts を開きます。
メモ帳を管理者権限で起動して、メニューの「開く」から hosts を開いても構いません。
hosts の最後に、次の行を追加します。
これで、Webサーバが起動していれば、http://dummy.test:8080/
次のコマンドでメモ帳で hosts を開きます。
コマンド
notepad C:\Windows\System32\drivers\etc\hosts
メモ帳を管理者権限で起動して、メニューの「開く」から hosts を開いても構いません。
hosts の最後に、次の行を追加します。
コード
127.0.0.1 dummy.test
これで、Webサーバが起動していれば、http://dummy.test:8080/
3. openssl のインストール
「openssl -v」でバージョンが表示されない場合は、openssl をインストールします。
コマンド
sudo dnf install openssl4. 自己署名証明書の作成
4.1 秘密鍵の作成
秘密鍵は、/etc/pki/tls/private に配置します。
server.key は、PKCS#8(PEM)と言う形式して、
「-----BEGIN PRIVATE KEY-----」で始まるテキストです。
コマンド
# 秘密鍵の作成する場所に移動
cd /etc/pki/tls/private
# 秘密鍵の作成
sudo openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server.key
server.key は、PKCS#8(PEM)と言う形式して、
「-----BEGIN PRIVATE KEY-----」で始まるテキストです。
4.2 自己署名証明書の作成
秘密鍵を使って、X.509 形式の証明書(server.crt)を作成します。
コマンドを実行すると、いろいろ聞かれるので、次のように入力します。
コマンド
sudo openssl req -new -x509 -key server.key -out server.crt -days 365
コマンドを実行すると、いろいろ聞かれるので、次のように入力します。
コマンド
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Tokyo
Organization Name (eg, company) [Default Company Ltd]:DummyCompany
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:dummy.test
Email Address []:admin@dummy.test
4.3 nginx.conf の修正
デフォルトではコメントになっている https 用の server を有効にします。
また、server.crt と server.key のパスを、先ほど作成したパスに変更します。
また、server.crt と server.key のパスを、先ほど作成したパスに変更します。
5. nginx.conf の修正
/etc/nginx/nginx.conf
Nginx を再起動します。
コード
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
root /usr/share/nginx/html;
ssl_certificate "/etc/pki/tls/private/server.crt";
ssl_certificate_key "/etc/pki/tls/private/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location ~ \.php$ {
root html;
# fastcgi_pass unix:/var/opt/remi/php85/run/php-fpm/www.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Nginx を再起動します。
6. ポートフォワーディングの設定
7. ファイアウォールの設定
コマンド
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload
# ファイアウォールの確認(ports: 443/tcp が追加されていれば OK)
sudo firewall-cmd --list-all8. 動作確認
/usr/share/nginx/html/test.php を適当に作成して、
https://dummy.test:8443/test.php で表示されれば OK です。
https://dummy.test:8443/test.php で表示されれば OK です。


