如果是在开发中使用Https,买一个正式的证书有些不太划算,所以需要自己生成一个自签名的证书来完成测试工作。
下面说明一下如何在Window上生成一个自签名的证书。
1. 安装openssl工具
- 首先下载windows版的openssl,根据自己系统选择不同的版本,我下载的是
Win64 OpenSSL v1.0.2L
下载页面 - 下载完之后按照步骤进行安装就可以
2. 打开openssl.exe
安装完成之后找到openssl的安装目录,打开bin下面的openssl.exe,接下来的操作都在这个命令窗口中执行
3. 生成证书
- 使用openssl生成一对公钥和私钥
genrsa -des3 -out server.key 2048
命令 | 说明 |
---|---|
genrsa | 生成rsa秘钥对 |
-des3 | 参数,使用des3对称加密算法,加密公钥和私钥 |
-out server.key 2048 | 输出公钥和私钥对到同级目录下的server.key文件,私钥的长度为2048位 |
需要输入密码,随便输入,后面生成证书的时候会需要。
- 生成证书申请文件
req -new -key server.key -out server.csr
命令 | 说明 |
---|---|
req | 创建证书申请文件命令 |
-new | 参数,新建一个申请 |
-key server.key | 使用server.key作为证书的秘钥对 |
-out server.csr | 把申请文件输出到server.csr文件中 |
- 删除秘钥对中的密码
而这个密码会带来一个副作用,那就是在每次Nginx启动Web服务器时,都会要求输入密码,这显然非常不方便,所以为们删除这个密码
rsa -in server.key -out server_no_passwd.key
删除密码
- 生成证书
x509 -req -days 365 -in server.csr -signkey server_no_passwd.key -out server.crt
命令 | 说明 |
---|---|
x509 | 对证书签名命令 |
-req | 表示输入文件为csr文件 |
-days 365 | 证书的有效期为365天 |
-signkey server_no_passwd.key | 使用这个秘钥对进行签名 |
-out server.crt | 把这个证书生成到server.crt文件中 |
得到的证书就是一个可以使用的ssl证书了
4. 配置证书到Nginx
- 下载nginx for windows
下载nginx
解压之后得到这样的目录结构
- 修改nginx的配置文件
首先把上面生成的几个证书,拷贝到conf文件夹下
打开nginx.conf文件进行修改
server {
listen 443;
#填写和证书上一直的域名
server_name www.test.com;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server_no_passwd.key;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
- 修改完成之后,启动nginx。
- 为了能使www.test.com能跳转到本机,需要修改hosts文件
添加一条记录
添加一条记录- 然后打开浏览器,访问 https://www.test.com
点击继续前往
继续前往现在https证书就已经配置完成。
上面提示不安全的原因是因为,我们使用的证书,浏览器无法验证证书的安全性,只有使用购买的证书才能避免这种现象
下面是用一个正式的证书演示一下
server {
listen 443;
server_name www.shangshanci.cn;
ssl on;
ssl_certificate 1_shangshanci.cn_bundle.crt;
ssl_certificate_key 2_shangshanci.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
配置域名
访问
网友评论