通过nginx+openssl自签名证书部署https应用并解决不安全问题

一、下载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"
相关推荐
今日说"法"4 小时前
Rust 内存泄漏的检测与防范:超越安全的实践指南
java·安全·rust
NewCarRen14 小时前
整合STPA、ISO 26262与SOTIF的自动驾驶安全需求推导与验证
人工智能·安全·自动驾驶·预期功能安全
芯盾时代14 小时前
低空经济网络安全体系
安全·web安全
鹿鸣天涯14 小时前
关于进一步做好网络安全等级保护有关工作的问题释疑-【二级以上系统重新备案】、【备案证明有效期三年】
网络·安全·web安全
00后程序员张15 小时前
如何提高 IPA 安全性 多工具组合打造可复用的 iOS 加固与反编译防护体系(IPA 安全 iOS 加固 无源码混淆 Ipa Guard 实战)
android·安全·ios·小程序·uni-app·iphone·webview
小妖同学学AI15 小时前
Rust 深度解析:变量、可变性与所有权的“安全边界”
开发语言·安全·rust
m0_7381207215 小时前
网络安全编程——开发一个TCP代理Python实现
python·tcp/ip·安全·web安全·网络安全
游戏开发爱好者816 小时前
Fiddler抓包实战教程 从安装配置到代理设置,详解Fiddler使用方法与调试技巧(HTTPHTTPS全面指南)
前端·测试工具·小程序·https·fiddler·uni-app·webview
安当加密16 小时前
安全登录多人共用的机密电脑:基于动态凭证与会话隔离的解决方案
安全·电脑