產生自簽憑證
產生自簽憑證的方式參考保哥的如何使用 OpenSSL 建立開發測試用途的自簽憑證 (Self-Signed Certificate)
-
若要產生名為
example.com
的自簽憑證,ssl.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[req] prompt = no default_md = sha256 default_bits = 2048 distinguished_name = dn x509_extensions = v3_req [dn] C = TW ST = Taiwan L = Taipei O = Duotify Inc. OU = IT Department emailAddress = admin@example.com CN = example.com [v3_req] subjectAltName = @alt_names [alt_names] DNS.1 = *.localhost DNS.2 = localhost DNS.3 = example.com IP.1 = 192.168.2.100
其中
[dn]
中的CN
要填入 domain name,[alt_names]
要新增 domain name -
產生私密金鑰 (
server.key
) 與憑證檔案 (server.crt
)1
openssl req -x509 -new -nodes -sha256 -utf8 -days 3650 -newkey rsa:2048 -keyout server.key -out server.crt -config ssl.conf
建立 Nginx 的 Docker 映像檔並啟動容器
-
建立 Nginx 站台設定檔,並命名為
default.conf
1
2
3
4
5
6
7
8
9
10server { listen 80; listen 443 ssl; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; root /usr/share/nginx/html; index index.html; }
-
建立 Dockerfile
1
2FROM nginx:alpine COPY default.conf /etc/nginx/conf.d/default.conf
-
建立 Docker 映像檔
1
docker build -t nginxssl .
-
啟動容器
1
docker run -it -d -p 80:80 -p 443:443 -v ${PWD}/server.key:/etc/nginx/server.key -v ${PWD}/server.crt:/etc/nginx/server.crt nginxssl
從本機開啟瀏覽器測試
以上步驟都是在 Linux (CentOS) 虛擬機器執行,如果要從本機 (Windows) 透過瀏覽器連線,注意以下幾點
- 記得將 Linux 虛擬機器 的 80 port 及 443 port 打開
-
在
C:\Windows\System32\drivers\etc\hosts
檔案加上 domain name,連線到example.com
時會以這個 IP 優先192.168.2.100 example.com
- 打開瀏覽器連線到
https://example.com
,會跳出你的連線不是私人連線,按下進階,繼續前往 example.com 網站即可