第1步:生成私钥

有密码:openssl genrsa -des3 -out private.key 1024
无密码:openssl genrsa -out private.key 1024

说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。

注意:生成私钥,需要提供一个至少4位的密码。

1024位RSA非对称密钥对已经变得不安全了,所以,美国国家标准技术研究院( NIST )要求停止使用不安全的1024位非对称加密算法。微软已经要求所有受信任的根证书颁发机构必须于2010年12月31日之前升级其不安全的1024位根证书到2048位和停止颁发不安全的1024位用户证书,12 月 31 日之后会把不安全都所有 1024 位根证书从 Windows 受信任的根证书颁发机构列表中删除!

而目前几乎所有自签证书都是1024位,自签根证书也都是1024位,当然都是不安全的。还是那句话:由于部署自签SSL证书而无法获得专业SSL证书提供商的专业指导,根本就不知道1024位已经不安全了。

第2步:生成CSR(证书签名请求)

openssl req -new -key private.key -out certrequest.csr

说明:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,

如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tony
Organizational Unit Name (eg, section) []:Unit
Common Name (e.g. server FQDN or YOUR name) []:*.my.com    这一项必须和你的域名一致
Email Address []:my@tony.com

第3步:生成CA自签证书

openssl x509 -req -in certrequest.csr -signkey private.key -out certificate.crt -extfile domain.ini -extensions ext

如果你不想花钱让CA签名,或者只是测试SSL的具体实现。那么,现在便可以着手生成一个自签名的证书了。

需要注意的是,在使用自签名的临时证书时,浏览器会提示证书的颁发机构是未知的。说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。

domain.ini是多域名配置列表,文件内容

[ ext ]
subjectAltName = @dns

[ dns ]
DNS.1 = my.com
DNS.2 = *.my.com
DNS.3 = mm.com
DNS.4 = tt.com
DNS.5 = localhost
DNS.6 = 127.0.0.1

第4步:创建pfx文件

openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx

第5步:解决浏览器提示不安全警告

将自建CA根证书加入到浏览器:因为我们不是官方的CA机构并没有内置在浏览器或系统中,所以浏览器会认为该CA非法,此时我们需要将我们自建CA的根证书加入到浏览器中。

Chrome :设置-设置-设置-高级-隐私设置和安全性-管理证书-导入
火狐:设置-选项-高级-证书-查看证书-证书机构-导入

win openssl 生成证书的更多相关文章

  1. CentOS6系统openssl生成证书和自签证书

    CentOS6系统openssl生成证书和自签证书的过程,记录一下,本文基于CentOS 6 64bit.$ yum install openssl openssl-devel 1,生成服务器端的私钥 ...

  2. 使用OpenSSL生成证书

    使用OpenSSL生成证书 下载安装openssl,进入/bin/下面,执行命令(把ssl目录下的openssl.cnf 拷贝到bin目录下)1.首先要生成服务器端的私钥(key文件):openssl ...

  3. 如何利用OpenSSL生成证书

    此文已由作者赵斌授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.前言 最近为了测试内容分发网络(Content Delivery Network,简称 CDN)添加的新功 ...

  4. [转帖] ./demoCA/newcerts: No such file or directory openssl 生成证书时问题的解决.

    接上面一篇blog 发现openssl 生成server.crt 时有问题. 找了一个网站处理了一下: http://blog.sina.com.cn/s/blog_49f8dc400100tznt. ...

  5. 使用 openssl 生成证书

    一.openssl 简介 目前最流行的 SSL 密码库工具官网:https://www.openssl.org/source/ 构成部分 密码算法库 密钥和证书封装管理功能 SSL通信API接口 用途 ...

  6. PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解

    一.公钥加密假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个文 ...

  7. openssl 生成证书基本原理

    摘自:http://blog.csdn.net/oldmtn/article/details/52208747 1. 基本原理 公司一个项目要进行交易数据传输,因为这个项目银行那边也是刚刚开始启动,所 ...

  8. centos7 openssl 生成证书给自己使用

    Step1: centos7 系统自己生成证书 给自己签发不安全的域名证书 openssl genrsa - #生成ca根秘钥 是长度 openssl req - -key ca.key -out c ...

  9. [k8s]通过openssl生成证书

    证书认证原理: http://www.cnblogs.com/iiiiher/p/7873737.html [root@m1 ssl]# cat master_ssl.cnf [req] req_ex ...

随机推荐

  1. IntelliJ IDEA 使提示不区分大小写

    File ==> Settings ==> Editor ==> General ==> Code Completion 第一行 Match case 将默认勾选去掉

  2. 【转载】ImportFbx Errors

    [转自http://blog.csdn.net/chenggong2dm/article/details/39580735] 问题: 在导入动作的时候出现一个错误: ImportFBX Errors: ...

  3. IOC应用之 Ninject

    什么是Ninject Ninject是一套.Net平台下的高效,超轻量级的依赖注入库.它可以帮助你实现应用程序的松耦合,高内聚,同时也能很灵活的把它们进行组合在一起.借助与Ninject的帮助,代码的 ...

  4. web服务-2、四种方法实现并发服务器-多线程,多进程,协程,(单进程-单线程-非堵塞)

    知识点:1.使用多线程,多进程,协程完成web并发服务器 2.单进程-单线程-非堵塞也可以实现并发服务器 1.多进程和协程的代码在下面注释掉的部分,我把三种写在一起了 import socket im ...

  5. JavaScript(七)

    类型转换 1.直接转换 parseInt() 与 parseFloat() alert('12'+7); //弹出127 alert( parseInt('12') + 7 ); //弹出19 ale ...

  6. You must configure either the server or JDBC driver (via the serverTimezone configuration property

    使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one ...

  7. mac上adb command not found

    第一种报错(使用的自带mac命令行) bash: adb: command not found 1.vim ~/.bash_profile ,如果.bash_profile不存在,先touch ~/. ...

  8. Node.js_express_中间件 middleware_登录/注册实例源代码

    静态资源: 都写死了的资源,如 css,html 解析规则: 所有路由和中间件都在一个数组中,js 引擎会按照代码先后顺序添加路由和中间件 当请求发送到服务器时,服务器获取当前的请求信息(请求方式.请 ...

  9. JS的javascript:void(0)用法

    javascript:void(0)用法如下: <a href="javascript:void(0)"></a> // 执行js函数,0表示不执行函数. ...

  10. javascript的数组之push()

    push()方法讲一个元素或多个元素添加到数组的末尾,并返回新数组的长度length,修改数组自身. var numbers = [1, 2, 3]; numbers.push(4); console ...