ローカル内で自己署名証明書を使わずにドメイン名+HTTPSでアクセスする

背景

ローカルの開発環境をHTTPSでアクセスしたいが、自己署名証明書だと警告が出たりと問題があるので、正規の証明書を発行して使用する

前回の記事で証明書を発行したので、今回はnginxに証明書をコピーし、HTTPSでアクセスできるようにする

環境

2VM

  • Unbound(DNS)
    • unbound 1.19.2.
  • Nginx
    • nginx version: nginx/1.24.0 (Ubuntu)

nginxのインストールと起動

インストールと状態の確認をする

1
2
3
4
sudo apt install nano
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl status nginx

“Active"が"active (running)“になっていればOK

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
mao@internal-domain:~$ sudo systemctl status nginx
 nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-12-15 01:33:08 UTC; 46s ago
       Docs: man:nginx(8)
    Process: 17202 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 17204 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 17205 (nginx)
      Tasks: 5 (limit: 9445)
     Memory: 3.6M (peak: 3.9M)
        CPU: 9ms
     CGroup: /system.slice/nginx.service
             ├─17205 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ├─17206 "nginx: worker process"
             ├─17207 "nginx: worker process"
             ├─17208 "nginx: worker process"
             └─17209 "nginx: worker process"

Dec 15 01:33:08 internal-domain systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Dec 15 01:33:08 internal-domain systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.

IPアドレスにアクセスしてnginxのスタートページが表示されることを確認する

証明書を入れるフォルダを作成し、証明書ファイルをアップロードする

証明書を入れるフォルダを作成する

1
sudo mkdir /etc/nginx/ssl

ローカルのPCからNginxがインストールされているサーバーへ証明書ファイルをアップロードする

1
scp -r /home/mao/internal.onodera-program.com mao@192.168.10.30:/home/mao/
1
2
3
4
5
6
7
8
mao@mao (x86_64) : /home/mao 
> scp -r /home/mao/internal.onodera-program.com mao@192.168.10.30:/home/mao/
mao@192.168.10.30's password: 
cert1.pem                                     100% 1306   927.0KB/s   00:00    
fullchain1.pem                                100% 2872     2.4MB/s   00:00    
privkey1.pem                                  100%  241   529.7KB/s   00:00    
README                                        100%  692     1.8MB/s   00:00    
chain1.pem                                    100% 1566     3.7MB/s   00:00    

Nginxの設定ファイルを作成する

設定ファイルを作成し、編集します

1
sudo nano /etc/nginx/conf.d/default.conf
  • default.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
    listen       80;
    listen       443 ssl;
    listen  [::]:80;
    listen  [::]:443 ssl;
    server_name  localhost;
    server_name  internal.onodera-program.com;

    ssl_certificate /etc/nginx/ssl/fullchain1.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey1.pem;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
  • “server_name"は使用するドメインを記載する
  • “ssl_certificate"と"ssl_certificate_key"はアップロードしたファイルをフルパスで記載する

設定を読み込むためにnginxを再起動する

1
2
sudo systemctl restart nginx
sudo systemctl status nginx

DNSサーバーの設定をする

ローカル内にあるDNSサーバー(今回はUnboundを構築した)に、IPアドレスとドメイン名を設定する
アクセスするPCのDNSを上記設定がされているDNSサーバーのIPアドレスを指定する

ドメイン名+HTTPSでアクセスしてみる

“https://ドメイン名"にアクセスする

証明書の警告等が表示されずにアクセスできればOK

その他

あとは同じ要領で証明書を他のサーバーに登録して、ローカルのサーバーにHTTPSでアクセスできるようにする
k8sのIngressに登録すれば、ローカル内でHTTPS+ドメイン名でアクセスできるようになる、はず

参考URL

Built with Hugo
テーマ StackJimmy によって設計されています。