2- Windows下生成自签名证书并配置Nginx

如果是在开发中使用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目录结构
  • 修改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文件
hosts文件路径

添加一条记录

添加一条记录
访问https

点击继续前往

继续前往

现在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;
        }
    }
配置域名
访问
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,491评论 19 139
  • 证书的三个作用 加密通信和身份验证(验证对方确实是对方声称的对象)和数据完整性(无法被修改,修改了会被知) 证...
    SuperRoot阅读 14,208评论 1 11
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,884评论 24 1,002
  • 用openssl生成nginx.key 1.key的生成openssl genrsa -des3 -out ser...
    灏玮阅读 15,279评论 0 1
  • 我挡不住自己空洞黑暗,我想我追求的应该还是热情充实,一种被填满的感觉,一种阳光的颜色,一种动感的旋律。
    magnoliaTSa阅读 845评论 0 0