如何创建一个自签名的SSL证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建一个自签名的SSL证书相关的知识,希望对你有一定的参考价值。

创建自签名不会被浏览器信任,当然起不到SSL证书真正的加密,很随意的被模仿或复制。
建议您淘宝:Gworg 获取可信SSL证书。
创建自签名证书的步骤

注意:以下步骤仅用于配置内部使用或测试需要的SSL证书。
第1步:生成私钥
使用openssl工具生成一个RSA私钥
$ openssl genrsa -des3 -out server.key 2048
说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。
注意:生成私钥,需要提供一个至少4位的密码。
第2步:生成CSR(证书签名请求)
生成私钥之后,便可以创建csr文件了。
此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:

$ openssl req -new -key server.key -out server.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]:joyios
Organizational Unit Name (eg, section) []:info technology
Common Name (e.g. server FQDN or YOUR name) []:demo.joyios.com
Email Address []:liufan@joyios.com

第3步:删除私钥中的密码
在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

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

$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。
第5步:安装私钥和证书
将私钥和证书文件复制到Apache的配置目录下即可,在Mac 10.10系统中,复制到/etc/apache2/目录中即可。
需要注意的是,在使用自签名证书时,浏览器会提示证书不受信任,如果你是对外网站使用,建议还是去CA机构申请可信的SSL证书,现在证书也很便宜,Gworg SSL证书可以淘宝获取。
参考技术A 自签名SSL证书只适合内部使用或测试需要,网站使用自签名SSL证书存在极大的风险:
一:自签SSL证书最容易被假冒和伪造,被欺诈网站利用
自签SSL证书是可以随意签发的,不受任何监管,您可以自己签发,别人也可以自己签发。如果您的网站使用自签SSL证书,那黑客也可以伪造一张一模一样的自签证书,用在钓鱼网站上,伪造出有一样证书的假冒网银网站!
二:部署自签SSL证书的网站,浏览器会持续弹出警告
自签SSL证书是不受浏览器信任的,用户访问部署了自签SSL证书的网站时,浏览器会持续弹出安全警告,极大影响用户体验。
三:自签SSL证书最容易受到SSL中间人攻击
用户访问部署了自签SSL证书的网站,遇到浏览器警告提示时,网站通常会告知用户点击“继续浏览”,用户逐渐养成了忽略浏览器警告提示的习惯,这就给了中间人攻击可乘之机,使网站更容易受到中间人攻击。
典型的SSL中间人攻击就是中间人与用户或服务器在同一个局域网,中间人可以截获用户的数据包,包括SSL数据包,并做一个假的服务器SSL证书与用户通信,从而截获用户输入的机密信息。当网站被假的SSL证书替换时,浏览器会警告用户此证书不受信任,需要用户确认是否信任此证书,用户习惯性点击“继续浏览”,中间人攻击轻而易举的实现了。
四:自签SSL证书没有可访问的吊销列表
这也是所有自签SSL证书普遍存在的问题,做一个SSL证书并不难,使用OpenSSL几分钟就搞定,但真正让一个SSL证书发挥作用就不是那么轻松的事情了。要保证SSL证书正常工作,其中一个必备功能是要让浏览器能实时查验证书状态是否已过期、已吊销等,证书中必须带有浏览器可访问的证书吊销列表。如果浏览器无法实时查验证书吊销状态,一旦证书丢失或被盗而无法吊销,就极有可能被用于非法用途而让用户蒙受损失。此外,浏览器还会发出“吊销列表不可用,是否继续?”的安全警告,大大延长浏览器的处理时间,影响网页的流量速度。
参考技术B 据我所知,自签名证书都是不被浏览器信任的,
而EV SSL证书是浏览器信任的,显示绿色地址栏,
要想自签名EV SSL证书根本不可能,
没有合法第三方介入,无法解决浏览器信任问题。本回答被提问者采纳
参考技术C http://blog.csdn.net/huplion/article/details/52892869 参考技术D http://blog.csdn.net/huplion/article/details/52892869

如何生成自签名双向认证证书 ssl

参考技术A 1.创建CA私钥: ca.key

2.创建根证书请求文件ca.csr:

这里需要填入配置信息:

3.自签根证书ca.cer:

4.【这一步可做可不做】生成p12格式根证书ca.p12(密码填写123456,之前ca.csr的密码,ps:这里输入的时候是不可见的输入完成后回车即可)

5.生成服务端私钥key server.key:

6.生成服务端请求文件 server.csr

填入证书配置信息:

server.csr

7.生成服务端证书server.cer(ca.cer,ca.key,servr.key,server.csr这4个生成服务端证书):

8.生成客户端key client.key:

9.生成客户端请求文件client.csr:

填入证书配置信息:

10.生成客户端证书 client.cer:

11.【可做可不做】生成客户端p12格式根证书client.p12(密码设置123456):

至此,证书就制作完毕了:

原因:请求没有带上ca证书,无法校验服务器的证书 

解决方法1:

curl 加上-cacert ca证书 校验服务器证书

解决方法2:

curl 加上-k 可以不校验服务器证书。

网上给出的答复是:

Whatever method you use to generate the certificate and key files, the Common Name value used for the server and client certificates/keys must each differ from the Common Name value used for the CA certificate. Otherwise, the certificate and key files will not work for servers compiled using OpenSSL.

When OpenSSL prompts you for the Common Name for each certificate, use different names.

解决方案:

参考文档链接:https://www.jianshu.com/p/094c7fc8cb85,感谢作者CQ_TYL

以上是关于如何创建一个自签名的SSL证书的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个自签名的SSL证书

如何创建一个自签名的SSL证书

如何创建一个自签名的SSL证书(X509)

如何创建用于 Tomcat 的自签名 SSL 证书?

❖ 自签名 SSL 证书(self-signed SSL certificate)

如何生成自签名双向认证证书 ssl