LoginSignup
0
0

mkcert での CA 証明書作成

Posted at

前書き

作成したWebAppをオンプレ環境でSSL化対応する必要があったので備忘記録

必要なもの

  • mkcert
  • openssl
  • nginx
  • https 化したいアプリ

openssl と nginx の入手方法は割愛

やることの概要

  1. mkcert により ca 証明書を作成する
  2. mkcert によりサーバー証明書を作成する(ca 証明書の秘密鍵で作成)
  3. リバースプロキシとして nginx を用意し、サーバー証明書を設定する
  4. クライアントに ca 証明書をインストールして、サーバー証明書が信頼されるようにする

目次

1. mkcert の入手
2. mkcert によるサーバー用証明書の作成
3. nginx の設定
4. CA 証明書の作成と配布

1. mkcert の入手

以下で入手可能
https://github.com/FiloSottile/mkcert

開いたら Release の最新版を導入でよいと思います
ダウンロードした exe をmkcert.exeにリネームしとくと使いやすいです
(しないと警告出る?かも?)

2. mkcert によるサーバー用証明書の作成

以下のコマンドで自分自身の証明書をつくれます
./mkcert.exe localhost {自分のIP}

これにより、localhost+2.pemlocalhost+2-key.pemができます
(ファイル名は指定するホスト数などで変動します)

3. nginx の設定

.pem と-key.pem のコピー

mkcert によるサーバー用証明書の作成で作成した*.pem*-key.pemを nginx のインストールしたフォルダを pwd として以下にコピーします
./conf/ssl

nginx.conf の設定

インストールしたフォルダを pwd として、以下に設定ファイルがあります
./conf/nginx.conf

開いたら以下のように設定

http {
  server {
    # httpsで待機
    listen       0.0.0.0:443 ssl;
    server_name  localhost;

    # CA証明書へのパス
    ssl_certificate "{絶対パス}/conf/ssl/localhost+2.pem";
    ssl_certificate_key "{絶対パス}/conf/ssl/localhost+2-key.pem";

    # クライアントへの転送設定
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # サーバーへの転送設定
    location /api {
        proxy_pass http://localhost:5071;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
  }
}

上記までやって./nginx.exeを実行するとサーバーが起動します
(アプリサーバーの起動を忘れずに)

ついでに./nginx.exe -s reloadで conf ファイルを読み込みなおせます

4. CA 証明書の作成と配布

CA 局証明書について

以下のコマンドを実行すると CA 局としての証明書があるパスを得られます
./mkcert.exe -CAROOT

手順2によって生成した証明書は CA 局としてサーバーに発行する証明書で、
上記コマンドでアクセスできるフォルダ内の証明書は CA 局自体の証明書

クライアントには CA 局自体の証明書を配ってルート証明書として信頼すると、
CA 局としてサーバーに発行した証明書が信頼されるようになります

CA 局証明書を クライアント 向けに変換

./mkcert.exe -CAROOTを pwd として以下を実行すると der ファイルを作成可能
openssl x509 -outform der -in rootCA.pem -out rootCA.der

上記で生成したrootCA.derを nginx のインストールフォルダを pwd として以下フォルダに配置します
./html

これでindex.htmlなどでリンクを指定すると配布が可能になります
クライアントごとにインストールしてもらうとこれで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