常用方法
查看证书过期时间
直接登录服务器看。
1 2
| $ openssl x509 -enddate -noout -in file.crt notAfter=Aug 10 23:59:59 2024 GMT
|
或者使用:
1
| $ openssl x509 -in server.crt -noout -dates
|
或者查看远程服务器的过期时间。
1 2 3
| $ openssl s_client -servername www.baidu.com -connect www.baidu.com:443 2>/dev/null | openssl x509 -noout -dates notBefore=Jul 6 01:51:06 2023 GMT notAfter=Aug 6 01:51:05 2024 GMT
|
查看证书信息
1
| $ openssl x509 -in file.crt -text -noout
|
自签名证书
生成私钥。
1
| $ openssl genrsa -out server.key 2048
|
生成证书请求csr
文件。
1
| $ openssl req -new -key server.key -out server.csr
|
生成CA证书。
1
| $ openssl genrsa -out ca.key 2048
|
生成CA证书请求csr
文件。
1
| $ openssl req -new -key ca.key -out ca.csr
|
生成自签名根证书,过期时间根据需要设置,这里设置成1年。
1
| $ openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -days 365
|
创建主题备用名(SubjectAltName)配置文件ext.ini
(如果不配置这个,chrome就无法识别)。
1 2 3 4 5 6 7
| basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names
[alt_names] DNS.1 = *.domain1.com DNS.2 = *.domain2.com
|
生成服务器证书。
1
| $ openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt -days 365 -extfile ext.ini
|
Nginx配置
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 26 27 28 29 30 31 32
| server { listen 443 ssl; server_name domain.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on;
gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; gzip_vary on; gzip_disable "MSIE [1-6]\."; error_page 404 /404.html; access_log /var/log/access.log; error_log /var/log/error.log; location / { proxy_pass http://ip:port/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } server { listen 80; server_name domain.com; rewrite ^(.*)$ https://$host$1; }
|