原文链接:https://blog.51cto.com/shhlamp/2120022

转载请注明出处!

---------------------------------------------------------------------------------------------

一:环境与安装说明

WIN7_64,Nginx服务器,OpenSSL_Win64。本人使用phpStudy集成开发环境,使用Nginx+PHP,支持浏览器https请求。

nginx下载地址:http://nginx.org/en/download.html 
     openssl下载地址:http://slproweb.com/products/Win32OpenSSL.html 
     官网地址:https://www.openssl.org/source/

二:安装OpenSSL及配置

1>下载后双击安装,默认安装路径是C:\OpenSSL-Win64

2>配置环境变量,这里不细说,略过。

三:生成ssl证书

1>首先,无论是在Linux下还是在Windows下的Cygwin中,进行下面的操作前都须确认已安装OpenSSL软件包。

2>创建根证书密钥文件myopenssl.key,输入以下命令:  openssl genrsa -des3 -out myopenssl.key

这里会提示让输入两次密码,请保持两次密码一致

Enter pass phrase for root.key: ← 输入一个新密码 
      Verifying – Enter pass phrase for root.key: ← 重新输入一遍密码

3>创建根证书的申请文件myopenssl.csr,输入以下命令: openssl req -new -key myopenssl.key -out myopenssl.csr

以下是提示信息

Enter pass phrase for root.key: ← 输入前面创建的密码 
        You are about to be asked to enter information that will be incorporated 
        into your certificate request. 
        What you are about to enter is what is called a Distinguished Name or a DN. 
        There are quite a few fields but you can leave some blank 
        For some fields there will be a default value, 
        If you enter ‘.’, the field will be left blank. 
        —– 
        Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN 
        State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音 
        Locality Name (eg, city) []:BeiJing ← 市的全名,拼音 
        Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 
        Organizational Unit Name (eg, section) []: ← 可以不输入 
        Common Name (eg, YOUR name) []: ← 此时不输入 
        Email Address []:admin@mycompany.com ← 电子邮箱,可随意填

Please enter the following ‘extra’ attributes 
        to be sent with your certificate request 
        A challenge password []: ← 可以不输入 
        An optional company name []: ← 可以不输入

4>创建一个自当前日期起为期十年的根证书myopenssl.crt,输入以下命令:openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey myopenssl.key -in myopenssl.csr -out myopenssl.crt

以下是提示信息:

Enter pass phrase for root.key: ← 输入前面创建的密码

5>创建服务器证书密钥server.key,输入以下命令:openssl genrsa -des3 -out server.key 2048 (实际执行时,并未填入-des3参数,待确认)

运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取      其他的保护措施。

去除key文件口令的命令: 
      openssl rsa -in server.key -out server.key

6>创建服务器证书的申请文件server.csr,输入以下命令:openssl req -new -key server.key -out server.csr

Country Name (2 letter code) [AU]:CN ← 国家名称,中国输入CN

State or Province Name (full name) [Some-State]:BeiJing ← 省名,拼音 
    Locality Name (eg, city) []:BeiJing ← 市名,拼音 
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 
    Organizational Unit Name (eg, section) []: ← 可以不输入 
    Common Name (eg, YOUR name) []:www.mycompany.com ← 服务器主机名,若填写不正确,浏览器会报告证书无效,但并不影响使用 
    Email Address []:admin@mycompany.com ← 电子邮箱,可随便填

Please enter the following ‘extra’ attributes 
    to be sent with your certificate request 
    A challenge password []: ← 可以不输入 
    An optional company name []: ← 可以不输入

7>创建自当前日期起有效期为期三年的服务器证书server.crt,输入以下命令:

openssl x509 -req -days 1095 -sha1 -extensions v3_req -CA myopenssl.crt -CAkey myopenssl.key -CAserial myopenssl.srl -CAcreateserial -in server.csr -out server.crt

8>创建客户端证书密钥文件client.key,输入以下命令:openssl genrsa -des3 -out client.key 2048

Enter pass phrase for client.key: ← 输入一个新密码 
    Verifying – Enter pass phrase for client.key: ← 重新输入一遍密码

9>创建客户端证书的申请文件client.csr,输入以下命令:openssl req -new -key client.key -out client.csr

Country Name (2 letter code) [AU]:CN ← 国家名称,中国输入CN 
    State or Province Name (full name) [Some-State]:BeiJing ← 省名称,拼音 
    Locality Name (eg, city) []:BeiJing ← 市名称,拼音 
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 
   Organizational Unit Name (eg, section) []: ← 可以不填 
   Common Name (eg, YOUR name) []:Lenin ← 自己的英文名,可以随便填 
   Email Address []:admin@mycompany.com ← 电子邮箱,可以随便填

Please enter the following ‘extra’ attributes 
   to be sent with your certificate request 
   A challenge password []: ← 可以不填 
   An optional company name []: ← 可以不填

10>创建一个自当前日期起有效期为三年的客户端证书client.crt,输入以下命令:

openssl x509 -req -days 1095 -sha1 -extensions v3_req -CA myopenssl.crt -CAkey myopenssl.key -CAserial myopenssl.srl -CAcreateserial -in client.csr -out client.crt

11>将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx,输入以下命令:openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx

Enter pass phrase for client.key: ← 输入上面创建的密码 
   Enter Export Password: ← 输入一个新的密码,用作客户端证书的保护密码,在客户端安装证书时需要输入此密码 
   Verifying – Enter Export Password: ← 确认密码

12>保存生成的文件备用,其中server.crt和server.key是配置单向SSL时需要使用的证书文件,client.crt是配置双向SSL时需要使用的证书文件,client.pfx是配置双向SSL时需要客户端安装的证书文件.crt文件和.key可以合到一个文件里 面,把2个文件合成了一个.pem文件(直接拷贝过去就行了)。

OpenSSl生成SSL证书(支持https)相关推荐

  1. 使用OpenSSL生成SSL证书的教程

    OpenSSL是一个加密软件库或工具包,它使计算机网络上的通信更加安全,可以使用其命令来创建SSL证书.OpenSSL采用apache授权许可,将工具包用于商业或非商业目的,下面就来看下CS如何利用O ...

  2. Nginx支持HTTPS,openssl生成SSL证书

    ./configure --prefix=/usr/local/nginx --with-http_ssl_module 1)创建SSL证书私钥,输入两次密码,生成文件为server.key open ...

  3. OpenSSL 生成 ssl 证书

    openssl 可以生成证书,但只是 "自制证书",我们自己来使用.因为我们生成的证书,不被各种浏览器认可,所以一般用于本机来测试.openssl 的介绍:https://segm ...

  4. 使用JDK工具生成SSL证书(网站https访问)

    文章目录 1 生成keystore文件 2 配置Tomcat 1 生成keystore文件 这个流程网上有很多. 2 配置Tomcat 首先注释到之前http访问的Connector. 再添加如下内容 ...

  5. Nginx支持HTTPS,生成SSL证书

    1.生成证书 # 1. 首先创建SSL证书私钥,期间需要输入两次用户名和密码,生成文件为blog.key: openssl genrsa -des3 -out blog.key 2048# 2. 利用 ...

  6. 如何制作SSL证书即https服务支持

    如何制作SSL证书即https服务支持 目的 最近需要做个网站,支持https的访问,但是,是内部使用的,不需要对外网开放. 基础知识 在制作之前先了解一下OpenSSL.HTTPS的关系.见http ...

  7. OPENSSL生成SSL自签证书

    OPENSSL生成SSL自签证书 目前,有许多重要的公网可以访问的网站系统(如网银系统)都在使用自签SSL证书,即自建PKI系统颁发的SSL证书,而不是部署支持浏览器的SSL证书. 支持浏览器的SSL ...

  8. JDK自带工具keytool生成ssl证书(web服务https配置)

    原文:https://www.cnblogs.com/zhangzb/p/5200418.html 前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl ...

  9. 如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密

    本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Let's Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由.自动 ...

最新文章

  1. 并发编程专题——第二章(并发编程之Synchronized详解)
  2. matlab丢失icuuc54,icuuc56.dll下载|
  3. Python-EEG工具库MNE中文教程(9)-参考电极应用
  4. 的文件夹结构_Windows中你需要知道的目录结构 「第一期」
  5. 50张非常精美的Apple主题桌面壁纸(上篇)
  6. Java基础学习总结(153)——HashMap、Hashtable、ConcurrentHashMap的原理与区别
  7. iOS 内存泄漏的常见场景
  8. 使用HbuilerX运行微信小程序到微信小程序模拟器
  9. 圆的面积函数定义及调用
  10. 百度地图调用笔记:javascript版本2
  11. Python新书上市,强烈推荐!《Python网络数据爬取及分析从入门到精通(爬取篇)》导读
  12. 2014 年度 Git@OSC【非GitHub】 最热门的 50 个项目
  13. 局域网终端准入控制经典案例,不用SDN。
  14. everedit 保存机器学习路径注意事项
  15. 和Ajax斗志斗勇的日子
  16. TortoiseSVN安装失败——Please install the universal CRT first
  17. 微信小程序云开发数据库操作
  18. Win7多用户下开机只显示一个用户
  19. NeXt VLAD多模态视频分类
  20. 计算机一级设置项目符号,重推计算机等级考试题库:一级MS Office第三章“项目符号和段落编号”...

热门文章

  1. substrate中打印调试信息的多种方式详解
  2. ascii码中的A的代码是什么?
  3. js中push使用 (数组)
  4. 简单(静态)工厂模式
  5. Python 小试牛刀
  6. Windows时钟同步问题
  7. R及R Studio下载及简单介绍(界面+R语言)
  8. 程序员在在哪个网站上找工作?
  9. 小a与星际探索vector向量
  10. C#不四舍五入保留两位小数