一、下载openssl软件
java
https://slproweb.com/products/Win32OpenSSL.html
下载第一个轻量级即可,安装一直下一步即可。
安装完成后将目录复制(找到bin文件夹并打开复制绝对路径)
找到电脑高级环境变量将复制的路径添加到path后面
二、下载nginx
java
https://nginx.org/en/download.html
生成证书并配置nginx(一)
打开cmd依次输入下方命令
xml
openssl genrsa -out private.key 2048
这里2048是密钥的位数,你可以根据需要选择更高的位数,如4096位。
openssl req -new -key private.key -out certificate.csr
使用以下命令来生成CSR,你需要提供一些信息如国家、州/省、城市、组织名、组织单位、常用名(CN)
openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certificate.crt
快速测试或开发环境,可以生成一个自签名证书,这里-days 365指定证书的有效期为365天。
nginx文件修改
server {
listen 443 ssl;
server_name your_domain.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
# 可选:指定使用的协议和密码套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
location / {
# 你的其他配置...
}
}
nginx -s reload
nginx配置更新生效
生成证书并配置nginx(二)
1、使用指定-subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization",生成根证书私钥和根证书 -keyout CA-private.key -out CA-certificate.crt
xml
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca
2、生成自签名证书私钥 -out private.key
xml
openssl genrsa -out private.key 2048
3、根据自签名证书私钥生成自签名证书申请文件 private.csr
xml
openssl req -new -key private.key -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization/CN=192.168.31.10" -sha256 -out private.csr
添加private.ext文件(解决chrome安全告警)
定义自签名证书扩展文件,在默认情况下生成的证书一旦选择信任,在 Edge, Firefox 等浏览器都显示为安全,但是Chrome仍然会标记为不安全并警告拦截,
这是因为 Chrome 需要证书支持扩展 Subject Alternative Name, 因此生成时需要特别指定 SAN 扩展并添加相关参数,将下述内容放到一个文件中
xml
[ req ]
default_bits = 1024
distinguished_name = req_distinguished_name
req_extensions = san
extensions = san
[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = Definesys
localityName = Definesys
organizationName = Definesys
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = IP:192.168.31.10
4、
根据根证书私钥及根证书-CA CA-certificate.crt -CAkey CA-private.key、自签名证书申请文件 -in private.csr、自签名证书扩展文件 -extfile private.ext,生成自签名证书private.crt
xml
openssl x509 -req -days 3650 -in private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN
xml
#nginx
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl/private.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
5、遇到证书不受信任时,可以将该CA的根证书安装到你的系统或浏览器的"受信任的根证书颁发机构"存储区中
把该证书CA-certificate.crt安装到受信任的根证书颁发机构下,即可从谷歌浏览器正常访问https的对应网址且不会报不安全警告。
xml
windows安装证书:
搜索栏输入"管理计算机证书或管理用户证书",然后选择打开"证书管理器"。
或运行certmgr.msc命令打开
在证书管理器中,选择"受信任的根证书颁发机构">证书文件夹。
右键选择"所有任务" > "导入"。
按照证书导入向导的指示,选择证书文件,完成导入
浏览器(以Chrome为例)安装证书:
打开Chrome浏览器(菜单按钮)选择"设置" 搜索并点击"隐私和安全"。
点击"安全"部分下的"管理证书"。
在弹出的"证书"窗口中,选择"受信任的根证书颁发机构"标签页,然后点击"导入"。
按照向导指示选择下载的证书文件并完成安装。
bash
批处理导入证书右键管理员运行即可
certutil -addstore Root "D:\ssl\CA-certificate.crt"