🦁

Go とローカル開発(SSL編)

2022/07/20に公開

下記の続きです

https://zenn.dev/cava_miku/articles/go_local_env_dns

やりたいこと

SSL でローカル開発をしたい

- $ curl http://local-auth.kikunavi.net
+ $ curl https://local-auth.kikunavi.net

証明書を取得

certbot コマンドで証明書と秘密鍵を取得しましょう。

$ sudo certbot certonly --manual -d yourdomain.com -d *.yourdomain.com --preferred-challenges dns-01

ドメインが、自己所有か確認する為、TXT レコードを追加し、Enter を押すことで取得ができます

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:

_acme-challenge.yourdomain.com.

with the following value:

V9DkaD_CqNgwwJGzf9QhxAjUMZzZpixx9FRKNQ5ILOw

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

取得した証明書と秘密鍵を ./backend/nginx/ssl フォルダに保存し、docker-compose でマウントします

compose
./local/docker-compose.yaml
  proxy:
   image: arm64v8/nginx:1.23-alpine
   container_name: proxy
   ports:
     - 80:80
   volumes:
     - ../backend/nginx/nginx.conf:/etc/nginx/nginx.conf
+     - ../backend/nginx/ssl:/etc/nginx/ssl

証明書を設定

次に nginx 側の設定です。ポートを 80 から 443 に変更し、ssl 証明書と秘密鍵を設定します。

main.conf
./backend/nginx/nginx.conf
user nginx;

events {
    worker_connections 1024;
}

http {
    server {
+      listen 443;
-      listen 80;
        # ご自身のドメインに変更してください
        server_name local-auth.kikunavi.net;

+      ssl_certificate /etc/nginx/ssl/server.crt;
+      ssl_certificate_key /etc/nginx/ssl/server.key;

        location / {
            resolver 127.0.0.11 valid=30s;
            set $upstream_auth auth;
            proxy_pass http://$upstream_auth:8080;
        }
    }

    server {
+      listen 443;
-      listen 80;
        # ご自身のドメインに変更してください
        server_name local-payment.kikunavi.net;

+      ssl_certificate /etc/nginx/ssl/server.crt;
+      ssl_certificate_key /etc/nginx/ssl/server.key;

        location / {
            resolver 127.0.0.11 valid=30s;
            set $upstream_payment payment;
            proxy_pass http://$upstream_payment:8080;
        }
    }
}

確認

下記のように https で疎通できたでしょうか!

$ curl https://local-auth.kikunavi.net
this is auth api

Discussion

ログインするとコメントできます