0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mkcertを利用し、ローカル環境をHTTPS化する

Last updated at Posted at 2025-07-17

初めに

初めてmkcertを利用して、ローカル環境をHTTPS化してみたので
初心者の方でもわかるよう、初心者がまとめてみました。

環境

  • macOS 15.3
  • Multipass 1.15.1+mac
  • Visual Studio Code 1.99
  • Ubuntu 24.04

HTTPS化 とは?

通常のWebサイトは http:// で始まりますが
https:// にすることで、暗号化された通信にできます。
このことで、個人情報(ネットショッピングで使用した際のカード情報など)も
安全になります。

HTTPS化するために、SSL/TLS証明書が使われます

SSL/TLS証明書 とは?

暗号の鍵と身分証明書のセット

証明書は、認証局(CA)と呼ばれるところが発行することで、本物だと証明されます。
ただ、開発中のテスト環境では、認証局は証明書を発行してくれません。
自己証明書を作成すればhttpsでアクセスができるようになりますが、
一から設定すると多くの工数がかかります。
そこで、mkcertを利用します。

mkcert とは?

ローカル開発環境で、手軽に自己証明書を作成してくれるツールです。

手順

0. multipassのユーザー作成

1. ローカルPC(Macなど)に mkcert をインストール

2. ローカル認証局のインストール

3. 証明書を作成

4. 作成した証明書を Multipass 上の Ubuntu に転送

5. Nginx に SSL 証明書のパスを設定

6. HTTP→HTTPS にリダイレクトする設定を追加

7. Nginx を再起動/再読み込み

8. サイトにアクセスして確認!

手順詳細

0. multipassの仮想マシン作成

multipass launch --name ubuntu-dev01 --cpus 4 --memory 8G --disk 32G 

やってること

multipass launch --name 仮想マシン名 --仮想マシンの設定

1. ローカルPC(Macなど)に mkcert をインストール

brew install mkcert

インストール方法はOSによって異なります
macOSならHomebrewを使って簡単にインストールできます。

2. ローカル認証局のインストール

mkcert -install

初めてmkcertを実行すると、コンピューター上にローカル認証局を作成し、
OSに信頼させます。

3. 証明書を作成

mkcert localhost 127.0.0.1 ::1 wp.techbull.cloud
  • localhost:自分のPCに名前でアクセス

  • 127.0.0.1:IPv4版の自分のPC名

  • ::1:IPv6版の自分のPC名

  • wp.techbull.cloud:開発用の任意ドメイン

出力されるファイル

実行ディレクトリに以下の2つのファイルが生成されます:

  • wp.techbull.cloud+X.pem:証明書(公開鍵)

  • wp.techbull.cloud+X-key.pem:秘密鍵

※ +Xはドメイン数に応じた識別子。

作成したファイルは以下で確認します。

ls -l ~/*.pem

4. 作成した証明書を Multipass 上の Ubuntu に転送

multipass transfer /Users/Users Name/localhost+3.pem ubuntu-dev01:/home/ubuntu/
multipass transfer /Users/Users Name/localhost+3-key.pem ubuntu-dev01:/home/ubuntu/

やってること

multipass transfer 鍵のパス 仮想マシンの名前:/パス

  • multipass transfer:SSH 経由でファイルをコピー

なぜUbuntu に転送する?

目的はサーバーで以下を行うから

  • 証明書(公開鍵)をブラウザに提示して「私は本物のサイトです」と証明
  • 秘密鍵で通信を暗号化・復号する

5. Nginx に SSL 証明書のパスを設定

# Multipassのシェルに入る
multipass shell ubuntu-dev01

以下は、wp.techbull.cloud.confにHTTPS設定を追加する例です。

# 設定ファイルを編集
sudo vi /etc/nginx/conf.d/wp.techbull.cloud.conf

server {
    listen 443 ssl;                  
    server_name wp.techbull.cloud;   
    root /var/www/wp.techbull.cloud/; 
    index index.php index.html;      
    access_log /var/log/nginx/wp.techbull.cloud.log custom_log;
    error_log /var/log/nginx/wp.techbull.cloud.error.log;

    # ↓ SSL/TLS 証明書のパスを指定。
    ssl_certificate /home/ubuntu/localhost+3.pem;       # ★ここに正確なパスを記述!
    ssl_certificate_key /home/ubuntu/localhost+3-key.pem; # ★ここに正確なパスを記述!
    
    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \\.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

6. HTTP→HTTPS にリダイレクトする設定を追加

server {
    listen 80;                      
    server_name wp.techbull.cloud;  
    
    # ここにアクセスが来たら、強制的にHTTPSにリダイレクトする
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;                  
    server_name wp.techbull.cloud;   
    root /var/www/wp.techbull.cloud/; 
    index index.php index.html;      
    access_log /var/log/nginx/wp.techbull.cloud.log custom_log;
    error_log /var/log/nginx/wp.techbull.cloud.error.log;

    ssl_certificate /home/ubuntu/localhost+3.pem;       
    ssl_certificate_key /home/ubuntu/localhost+3-key.pem; 
    
    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \\.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

やってること

return 301 https://$host$request_uri;
ポート80 内に上記を設定することで、 443 へ自動転送できる

7. Nginx を再起動/再読み込み

# 設定ファイルに文法エラーがないかチェック
sudo nginx -t 
# Nginxを再起動
sudo systemctl reload nginx 

8. サイトにアクセスして確認!

ブラウザから確認できたら成功です!

終わりに

私自身、SSHと綴りが近いことから、ごっちゃになっていました
今回まとめたことで違いも明確になり、HTTPS化について理解ができたと思います!
ありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?