签证
#!/usr/bin/env bash__main() { _subj="/C=CN/ST=Zhejiang/L=Hangzhou/O=lwmacct/OU=universal domain name/CN=lwm.icu" _openssl_conf=$(printf "[SAN]\nsubjectAltName=DNS:*.port.local.lwm.icu") # ca openssl genrsa -out ca.key 2048 openssl req -x509 -new -nodes -key ca.key -days 100000 -out ca.crt -subj "$_subj" # 服务端 openssl genrsa -out server.key 2048 # 创建私钥 openssl req -new -key server.key -out server.csr -subj "$_subj" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(echo "$_openssl_conf")) # 生成 csr openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -extensions SAN -extfile <(cat /etc/ssl/openssl.cnf <(echo "$_openssl_conf")) # 生成证书 # 客户端 openssl genrsa -out client.key 2048 # 创建私钥 openssl req -new -key client.key -out client.csr -subj "$_subj" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(echo "$_openssl_conf")) # 生成 csr openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -extensions SAN -extfile <(cat /etc/ssl/openssl.cnf <(echo "$_openssl_conf")) # 生成证书 # 客户端公钥秘钥打包为 pfx openssl pkcs12 -export -out client.pfx -inkey client.key -in client.crt -passout pass:kuaicdn}__main
Nginx
server { listen 80; #监听ipv4 server_name *.port.local.lwm.icu; #虚拟主机域名 rewrite ^(.*)$ https://$host$1 permanent; #rewrite跳转}server { listen 443 ssl http2; server_name ~^(?<port>\d+)\.port\.work\.kuaicdn\.cn$; # access_log /var/log/nginx/host.access.log main; ssl_verify_client on; ssl_verify_depth 2; ssl_client_certificate /etc/nginx/lwm.icu/openssl/ca.crt; ssl_certificate /etc/nginx/lwm.icu/openssl/server.crt; #证书在conf文件同级; ssl_certificate_key /etc/nginx/lwm.icu/openssl/openssl/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; location / { proxy_pass http://$_ip:$port$request_uri; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; proxy_set_header Host $host; proxy_http_version 1.1; 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 https; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Origin ""; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }}