百度
360搜索
搜狗搜索

openssl生成ssl证书, 自签名 SSL 证书(self-signed SSL certificate)详细介绍

本文目录一览: 用openssl生成的ssl证书和付费的有什么区别

用openssl生成的SSL证书也就是自签名证书,不受任何浏览器的信任,所以起不到安全防护的作用。而付费的SSL证书则是由可靠的第三方数字证书颁发机构颁发,权威且可信,所以千万不要贪图便宜而选择自签名证书。
用openssl生成的ssl证书和付费的有什么区别 本文记叙的是一次基于SSL的socket通讯程序开发中,有关证书,签名,身份验证相关的步骤。 我们的场景下,socket服务端是java语言编写的,客户端是c语言。使用了一个叫做matrixssl的c语言库。自己做CA签名,不等同于“自签名”。 自签名的情况,RSA的公钥私钥只有一对,用私钥对公钥证书做签名。而我们的场景是,自己做CA,有一个CA的公钥私钥对。 而socket的服务端也有一个公钥私钥对。 用CA的私钥对socket服务端的公钥证书做签名。 openssl genrsa -out ca.key 1024 (这里我们没有用des3加密。 可以增加一个-des3参数加密,详情可以man genrsa) openssl req -new -x509 -days 36500 -key ca.key -out ca.crt (这一步的时候需要在提示之下输入许多信息,包括国家代码,省份,城市,公司机构名等) 生成server端的私钥key: openssl genrsa -out server.key 1024 生成server端的req文件(这一步生成的req文件,包含公钥证书,外加身份信息,例如国家,省份,公司等。用它提交给ca,让ca来对它做签名 ): openssl req -new -key server.key -out server.csr 用CA的私钥对server的req文件做签名,得到server的证书: openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt (注:如果第一次使用openssl,报告一些相关的文件找不到之类的错误,可能需要先执行2个命令:touch /etc/pki/CA/index.txt 和 echo '01' > /etc/pki/CA/serial) 以上得到的server.crt就是服务端的证书文件。(有很多软件中需要各种不同证书存储格式,可能需要各种转换。 如PEM, P12等,我们的场景下也需要一点转换,下文会描述。刚开始做这些的同学可能会觉得证书,以及格式等非常的混乱。 这个时候能做的就是冷静下来,耐心的理清楚TLS, RSA等原理, 多看看openssl的man文档) 不知道把ca.crt叫做CA的证书文件是否妥当,但是可以确定的是,客户端使用ca.crt可以校验server的身份。server在SSL/TLS握手的过程中会下发自己的证书,而这个证书是经过CA签名的。CA签名的时候使用的是CA自己的私钥,而ca.crt则包含了CA的公钥,可以用于检验这一签名,以确认是否是自己签的名。 服务端需要使用的文件是:server私钥(key), server证书。 客户端需要使用的文件是:CA file(ca的证书,用以验证server下发的证书) 我们的server端使用java, 使用p12(PKCS12)格式的证书。使用openssl可以进行格式转换: openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12 可以看到输出的server.p12中应该包含了server.key和server.crt的内容。 我们的c语言客户端直接使用CA文件: ca.crt. 我们也用java写过客户端, java使用CA文件格式为 jks。那么可能需要一个转换,这里使用的是java的bin目录下的keytool: keytool -importcert -alias CA -file ca.crt -keystore ca.jks 转换的时候要求输入一个密码。这样就把ca.crt转换为了 ca.jks格式。 下面附上部分socket服务端和java版的客户端的代码。c的就不贴了,用的matrixssl。 java服务端(mina)代码片段: String file = "/file/path/server.p12"; String keyType = "PKCS12"; char[] password = "passwd".toCharArray(); KeyStore ks = KeyStore.getInstance(keyType); ks.load(new FileInputStream(file), password); KeyManagerFactory kmf = KeyManagerFactory.getInstance( KeyManagerFactory.getDefaultAlgorithm()); kmf.init(ks, password); SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(kmf.getKeyManagers(), null, null); SslFilter sslFilter = new SslFilter(ctx); 在mina的aeptor中增加这个filter就可以了。 aeptor.getFilterChain().addLast("ssl", new SslFilter(createSslContext())); java版客户端(mina)代码片段: trust String file = "/data/tmp/ca.jks"; String keyType = "jks"; char[] password = "123456".toCharArray(); KeyStore ks = KeyStore.getInstance(keyType); ks.load(new FileInputStream(file), password); TrustManagerFactory tmf = TrustManagerFactory .getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(ks); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tmf.getTrustManagers(), null); SslFilter sslFilter = new SslFilter(sslContext); sslFilter.setUseClientMode(true); server端是addLast , 这个却是 addFirst. 这个顺序不能搞错了。 connector.getFilterChain().addFirst("sslFilter", sslFilter);
自己生成的ssl证书与购买的ssl证书有什么区别 1、自己生成的ssl证书是没有通过认证的,非法的SSL证书,购买的SSL证书是有CA机构如沃通WoSign CA签发的SSL证书,CA机构要经过国际webtrust认证和电子签发法许可。
2、自己生成的SSL证书,浏览器不信任,会阻止访问;购买的SSL证书浏览器信任,显示绿色安全锁;
3、自己生成的SSL证书容易被伪造和假冒,容易被中间人攻击,不安全。购买的SSL证书更加安全可信。
举个例子:

自己生成的SSL证书,就像自己制作的身份证,没人认可,没有机构认可,无法通行。
购买的SSL证书,就像公安局颁发的身份证,全球认可,购物,刷卡,住宿都顺利通行。如果你违反乱纪,公安局就可以查到你的身份证进行吊销或者标记追踪。

如何生成SSL证书和key

使用OpenSSL工具可以生成key和SSL证书,但是这是自签名SSL证书,存在安全隐患,浏览器不信任,建议去受信任的第三方机构申请正规SSL证书,没预算的话可以申请免费的,安全性有保障,这里就有网页链接,挺好用的。
自己生成SSL证书是自签名证书,不安全,最好是交给正规证书颁发机构去生成,还不用自己弄代码那么复杂,GDCA可以申请各类型SSL证书,免费付费的都有,看你需要。
可以找专业的SSL证书服务商来生成SSL证书和key,具体步骤如下:
第一步:将CSR提交到证书服务商
CSR(Certificate Signing Request)文件必须由用户自己生成,也可以利用在线CSR生成工具。选择要申请的产品,提交一个新的订单,并将制作好的CSR文件提交。
第二步 资料提交到CA
当收到您的订单和CSR后,如果是域名验证型证书(DV SSL证书),在域名验证之后10分钟左右就可颁发证书,若是其他类型证书则是需要通过CA机构进行验证之后才可颁发。
第三步 发送验证邮件到管理员邮箱
权威CA机构获得资料后,将发送一封确认信到管理员邮箱,信中将包含一个 对应的链接过去。每一个订单,都有一个唯一的PIN以做验证用。
第四步 邮件验证
点击确认信中的链接,可以访问到CA机构验证网站,在验证网站,可以看到该订单的申请资料,然后点击”I Approve”完成邮件验证。
第五步 颁发证书
在用户完成邮件验证之后,CA机构会将证书通过邮件方式发送到申请人自己的邮箱,当用户收到证书后直接安装就可以了。若安装存在问题,安信证书是提供免费证书安装服务的。

openssl 生成nginx永久ssl证书

1、SSL证书制作依靠openssl,首先检查OpenSSL:一般centos7上默认装好了

[root@zq testzq]# openssl version

OpenSSL 1.0.2k-fips? 26 Jan 2017

2、生成私钥和自签名的SSL证书:

2.1、生成私钥 ,参数genrsa:生成RSA私钥;-des3:des3算法;-out server.pass.key:生成的私钥文件名;2048:私钥长度

[root@zq testzq]# openssl genrsa -des3 -out server.pass.key 2048

Generating RSA private key, 2048 bit long modulus

.............................................................+++

.......................+++

e is 65537 (0x10001)

Enter pass phrase for server.pass.key:

Verifying - Enter pass phrase for server.pass.key:? ? ? ? ? ? ? ? #输入一个4位以上的密码

[root@zqtestzq]# ll

-rw-r--r-- 1 root root 1751 1月? 20 11:01 server.pass.key? #有密码的私钥文件

2.2、去除私钥中的密码

[root@zq testzq]# openssl rsa -in server.pass.key -out server.key

Enter pass phrase for server.pass.key:

writing RSA key

[root@zq testzq]# ll

-rw-r--r-- 1 root root 1679 1月? 20 11:01 server.key? ? ? ? ? ? #无密码的私钥文件

-rw-r--r-- 1 root root 1751 1月? 20 11:01 server.pass.key? ? #有密码的私钥文件

[root@zq testzq]# openssl genrsa -des3 -out server.pass.key 2048

Generating RSA private key, 2048 bit long modulus

.............................................................+++

.......................+++

e is 65537 (0x10001)

Enter pass phrase for server.pass.key:

Verifying - Enter pass phrase for server.pass.key:? ? ? ? ? ? ? ? #输入一个4位以上的密码

[root@zqtestzq]# ll

-rw-r--r-- 1 root root 1751 1月? 20 11:01 server.pass.key? #有密码的私钥文件

2.2、去除私钥中的密码

[root@zq testzq]# openssl rsa -in server.pass.key -out server.key

Enter pass phrase for server.pass.key:

writing RSA key

[root@zq testzq]# ll

-rw-r--r-- 1 root root 1679 1月? 20 11:01 server.key? ? ? ? ? ? #无密码的私钥文件

-rw-r--r-- 1 root root 1751 1月? 20 11:01 server.pass.key? ? #有密码的私钥文件

2.3、生成CSR(证书签名请求文件)

[root@zq testzq]# openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=gitlab.xdevops.cn"

参数说明:# req 生成证书签名请求? ?

? ? ? ? ? ? ? ? ? # -new 新生成? ? ? ? ? ?

? ? ? ? ? ? ? ? ? # -key 私钥文件? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? # -out 生成的CSR文件? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? # -subj 生成CSR证书的参数

2.4、生成自签名的SSL证书

[root@zq testzq]# openssl x509 -req -days 1825 -in server.csr -signkey server.key -out server.crt? #-days:证书有限期(天)

Signature ok

subject=/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=gitlab.xdevops.cn

Getting Private key

[root@zq testzq]# ll

-rw-r--r-- 1 root root 1241 1月? 20 11:00 server.crt? ? ? ? ? ? #自签名的SSL证书

阅读更多 >>>  考UG证书相关问题

-rw-r--r-- 1 root root 1021 1月? 20 11:00 server.csr? ? ? ? ? ? #签名文件

-rw-r--r-- 1 root root 1679 1月? 20 11:01 server.key? ? ? ? ? ? #无密码的私钥文件

-rw-r--r-- 1 root root 1751 1月? 20 11:01 server.pass.key? #有密码的私钥文件nginx

server {

? ? listen? ? ? 8443;

? ? ssl? ? ? ? ? on;

? ? ssl_certificate /home/testzq/server.crt;? ? ? #配置已签名的SSL证书.crt

? ? ssl_certificate_key /home/testzq/server.key;? #配置已签名的证书私钥.key

? ? .............................................

server {

? ? listen? ? ? 443;

? ? ssl? ? ? ? ? on;

? ? ssl_certificate /home/testzq/server.crt;

? ? ssl_certificate_key /home/testzq/server.key;

用openssl 和 keytool 生成 SSL证书

SSL(Secure Sockets Layer (SSL) and Transport Layer Security (TLS))被设计为加强Web安全传输(HTTP/HTTPS/)的协议(事实上还有SMTP/NNTP等) ,默认使用443端口
openssl 适用范围广。
keytool 单独针对 java application
数字证书是现代互联网中个体间相互信任的基石。
如果没有了数字证书,那么也就没有了各式各样的电商平台以及方便的电子支付服务。目前我们所提到的数字证书都是基于 ITU 制定的 X.509 标准。
简单来说,数字证书就是一张附带了数字签名的信息表。
x509证书一般会用到三类文件,key,csr,crt。
Key是私用密钥,openssl格式,通常是rsa算法。
csr是证书请求文件(certificate signing request),用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。
crt是CA认证后的证书文件(certificate),签署人用自己的key给你签署的凭证。
CA根证书的生成步骤
生成CA私钥(.key)-->生成CA证书请求(.csr)-->自签名得到根证书(.crt)(CA给自已颁发的证书)。
本质上就是用私钥去获取证书,然后把这两个文件一起放到server,以此来证明 我就是我 。
上面是交互式输入,非交互的方式如下
自签名是免费/测试的证书,浏览器默认不认可。
通常的方法是:提交CSR到证书公司(比如VeriSign,Inc),等对方发来证书。(当然这是要花钱的)
比如Nginx服务器,把 ca.key 和 ca.crt 放到 /etc/nginx/certs 目录。修改/etc/nginx/nginx.conf
重启服务生效
引入一个概念:SAN
SAN stands for “ Subject Alternative Names ” and this helps you to have a single certificate for multiple CN (Common Name).
简而言之,用SAN是为了省钱,一个证书给多个网址使用。如果用之前的交互方式来申请证书,根本没有地方来输入SAN,要解决这问题,需用到配置文件。
The entries in SAN certificate:
Create new Private Key and Certificate Signing Request
生成 private key 和 生成 CSR 合并成一步
例子
于是 ca.csr ca.key 都生成了,csr 用于申请证书。
Keytool 是一个Java数据证书的管理工具 , Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。
这是java专用方式,过程跟openssl 类似。
服务器配置可以使用私钥+证书合并在一起的文件,如jks或者pkcs12文件,这类文件一般叫key.keystore。(openssl使用两个文件)
(openssl 自签名参考上面)
测试阶段,也可以用keytool 来实现自签名(根据证书请求生成证书)。
用 jenkins 来举例
查看单个证书
列出keystore存在的所有证书
使用别名查看keystore特定条目
删除keystore里面指定证书
更改keysore密码
导出keystore里面的指定证书
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html

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

自签名SSL证书即自己给自己颁发的SSL证书,不受任何第三方监督,是不被任何浏览器信任的。自签名SSL证书的缺点如下:1、容易遭受黑客攻击因为自签名SSL证书不是由CA机构进行颁发的,所以CA机构是无法识别签名者并且不会信任它,因此私钥也形同虚设,网站的安全性会大大降低,很容易就会遭受黑客的攻击,没有任何安全保障。2、大大降低用户体验度自签名SSL证书是自己可以给自己签发的,没有任何可信度,所以是不受任何浏览器信任的,即使安装了自签名SSL证书,当用户在访问时浏览器依然会弹出“不安全”的警告,大大降低了用户体验度。3、超长有效期,容易被破解自签名SSL证书的有效期特别长,短则几年,长则几十年,想签发多少年就多少年。而由受信任的CA机构签发的SSL证书有效期不会超过2年,因为时间越长,就越有可能被黑客破解。所以超长有效期是它的一个弊端。4、安装容易,吊销难自签名SSL证书是没有可访问的吊销列表的,所以它不具备让浏览器实时查验证书的状态,一旦证书丢失或者被盗而无法吊销,就很有可能被用于非法用途从而让用户蒙受损失。同时,浏览器还会发出“吊销列表不可用,是否继续?”的警告,不仅降低了网页的浏览速度,还大大降低了访问者对网站的信任度。
自签名的SSL证书制作极其简单,几句openssl命令即可生成一个密钥和证书。但是: 自签名证书在网络上是不可信的,但如果只是自己家里、局域网内测试,是没有问题的。因为现在很多应用全都强制要求是https,所以自己电脑、家里服务器也都必须装配ssl证书。不愿意花钱买第三方证书,就自己本机制作一个自签名证书,也是可以的。
参考:如何在Linux中创建SSL证书签名请求(CSR) 参考:创建并部署自签名的 SSL 证书到 Nginx
制作前须知:
在本机创建一个自签名(自己给自己签名)的SSL证书,都是用 openssl 命令。一般Mac/Ubuntu等都是默认装配的,安装的话也是类似 sudo apt-get install openssl ,很简单。
生成证书分为这四步:
生成证书:
此时 ~/.ssl/ 文件夹下只剩下两个文件,即私钥-公钥(证书)对:
然后就可以将两个文件应用到HTTPS网络连接了。
CSR请求文件的互动过程太慢,每次手输比较麻烦,一般会用 *.cnf 配置文件来自动完成所需要输入的个人信息等内容。 比如可以建立一个 ~/.ssl/CSR-Config.cnf ,内容格式如下:
生成CSR请求文件时候,就可以用 -config 参数引用这个配置文件而不用进入交互环节了,命令如下:
另外,由于上面是指定的域名为 www.dev.lan ,随便写的。为了让本地能正常访问局域网内的服务器,需要在本地的 /etc/hosts 中将 www.dev.lan 指定为一个ip地址,如 192.168.1.101
无论如何,自签名证书都是不会被自动信任的。 所以服务器的证书,必须在每台客户端设备上手动导入或信任才行。
Chrome信任自签名证书: 打开: chrome://flags/#allow-insecure-localhost ,然后enable本地不安全证书。
Mac本机信任自签名证书: 从Chrome的红色警告图标上,直接拖拽到桌面,就把证书保存到桌面了。 然后双击,启动证书管理器,打开证书,点击上面有一个 Trust ,选择 Always trust 即可。
iOS信任自签名证书: 在Safari的地址栏,点击
因为自签名证书无论如何都不被信任,很麻烦。所以干脆用免费申请到的公网证书来局域网用,然后就能被Chrome完全认可。 方法就是,把第三方证书配置到nginx等服务器上。然后修改本地的 /etc/hosts 文件,将局域网内的ip映射为第三方证书所对应的网站,如 192.168.1.101 music.spotify.com 。这样的话,就完全没有报警提示了。 但是,也需要每台客户端都修改hosts才行。(iOS不能改)
所有客户端都改还是比较麻烦的,如果可以配置路由器的话,直接修改路由器的hosts,或者路由器上的转发,就能达到所有局域网内客户端都能访问了。 但是缺点是,局域网上配置的映射后,就不能访问那个真实网址 music.spotify.com 听歌了。

Linux下生成能用的SSL证书的步骤

我们首先要设置 openssl 的全局配置文件
在debian下他的配置文件在 /usr/lib/ssl/openssl.cnf

需要修改的内容:
具体怎么改可以自己决定

在CA目录下创建两个初始文件:

为了安全起见,修改cakey.pem私钥文件权限为600或400,也可以使用子shell生成( umask 077; openssl genrsa -out private/cakey.pem 2048 ),下面不再重复。

使用req命令生成自签证书:

然后会有提示,之后再出现也是这样填,不再重复

以上都是在CA服务器上做的操作,而且只需进行一次,现在转到nginx服务器上执行:

这里测试的时候CA中心与要申请证书的服务器是同一个。

另外在极少数情况下,上面的命令生成的证书不能识别,试试下面的命令:

上面签发过程其实默认使用了-cert cacert.pem -keyfile cakey.pem,这两个文件就是前两步生成的位于/etc/pki/CA下的根密钥和根证书。将生成的crt证书发回nginx服务器使用。

到此我们已经拥有了建立ssl安全连接所需要的所有文件,并且服务器的crt和key都位于配置的目录下,剩下的是如何使用证书的问题。

因为这是个人生成的证书,浏览器第一次可能会报错,只要添加信任之后就可以正常使用了!

openssl 生成ssl证书 能不能用

直接生成的SSL证书可以测试,但不能用于商务用途,因为这种证书很容易复制一本一样的。
openssl生成的ssl证书一般只适合用来测试或学习,属于自签名SSL证书。给正规网站安装SSL证书建议去权威的CA机构申请SSL证书。
用openssl生成的ssl证书也叫自签名ssl证书,这种证书不建议使用,因为有很多弊端:
第一、被“有心者”利用。
其实“有心者”指的就是黑客。自签名SSL证书你自己可以签发,那么同样别人也可以签发。黑客正好利用其随意签发性,分分钟就能伪造出一张一模一样的自签证书来安装在钓鱼网站上,让访客们分不清孰真孰假。
第二、浏览器会弹出警告,易遭受攻击
前面有提到自签名SSL证书是不受浏览器信任的,即使网站安装了自签名SSL证书,当用户访问时浏览器还是会持续弹出警告,让用户体验度大大降低。因它不是由CA进行验证签发的,所以CA是无法识别签名者并且不会信任它,因此私钥也形同虚设,网站的安全性会大大降低,从而给攻击者可乘之机。
第三、安装容易,吊销难
自签名SSL证书是没有可访问的吊销列表的,所以它不具备让浏览器实时查验证书的状态,一旦证书丢失或者被盗而无法吊销,就很有可能被用于非法用途从而让用户蒙受损失。同时,浏览器还会发出“吊销列表不可用,是否继续?”的警告,不仅降低了网页的浏览速度,还大大降低了访问者对网站的信任度。
第四、超长有效期,时间越长越容易被破解
自签名SSL证书的有效期特别长,短则几年,长则几十年,想签发多少年就多少年。而由受信任的CA机构签发的SSL证书有效期不会超过2年,因为时间越长,就越有可能被黑客破解。所以超长有效期是它的一个弊端。

用openssl生成的ssl证书和付费的有什么区别

本文记叙的是一次基于SSL的socket通讯程序开发中,有关证书,签名,身份验证相关的步骤。 我们的场景下,socket服务端是java语言编写的,客户端是c语言。使用了一个叫做matrixssl的c语言库。自己做CA签名,不等同于“自签名”。 自签名的情况,RSA的公钥私钥只有一对,用私钥对公钥证书做签名。而我们的场景是,自己做CA,有一个CA的公钥私钥对。 而socket的服务端也有一个公钥私钥对。 用CA的私钥对socket服务端的公钥证书做签名。
openssl genrsa -out ca.key 1024
(这里我们没有用des3加密。 可以增加一个-des3参数加密,详情可以man genrsa)
openssl req -new -x509 -days 36500 -key ca.key -out ca.crt
(这一步的时候需要在提示之下输入许多信息,包括国家代码,省份,城市,公司机构名等)
生成server端的私钥key:
openssl genrsa -out server.key 1024
生成server端的req文件(这一步生成的req文件,包含公钥证书,外加身份信息,例如国家,省份,公司等。用它提交给ca,让ca来对它做签名 ):
openssl req -new -key server.key -out server.csr
用CA的私钥对server的req文件做签名,得到server的证书:
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
(注:如果第一次使用openssl,报告一些相关的文件找不到之类的错误,可能需要先执行2个命令:touch /etc/pki/CA/index.txt 和 echo '01' > /etc/pki/CA/serial)
以上得到的server.crt就是服务端的证书文件。(有很多软件中需要各种不同证书存储格式,可能需要各种转换。 如PEM, P12等,我们的场景下也需要一点转换,下文会描述。刚开始做这些的同学可能会觉得证书,以及格式等非常的混乱。 这个时候能做的就是冷静下来,耐心的理清楚TLS, RSA等原理, 多看看openssl的man文档)
不知道把ca.crt叫做CA的证书文件是否妥当,但是可以确定的是,客户端使用ca.crt可以校验server的身份。server在SSL/TLS握手的过程中会下发自己的证书,而这个证书是经过CA签名的。CA签名的时候使用的是CA自己的私钥,而ca.crt则包含了CA的公钥,可以用于检验这一签名,以确认是否是自己签的名。
服务端需要使用的文件是:server私钥(key), server证书。
客户端需要使用的文件是:CA file(ca的证书,用以验证server下发的证书)
我们的server端使用java, 使用p12(PKCS12)格式的证书。使用openssl可以进行格式转换:
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
可以看到输出的server.p12中应该包含了server.key和server.crt的内容。
我们的c语言客户端直接使用CA文件: ca.crt.
我们也用java写过客户端, java使用CA文件格式为 jks。那么可能需要一个转换,这里使用的是java的bin目录下的keytool:
keytool -importcert -alias CA -file ca.crt -keystore ca.jks
转换的时候要求输入一个密码。这样就把ca.crt转换为了 ca.jks格式。
下面附上部分socket服务端和java版的客户端的代码。c的就不贴了,用的matrixssl。
java服务端(mina)代码片段:
String file = "/file/path/server.p12";
String keyType = "PKCS12"; char[] password = "passwd".toCharArray();
KeyStore ks = KeyStore.getInstance(keyType);
ks.load(new FileInputStream(file), password);
KeyManagerFactory kmf = KeyManagerFactory.getInstance(
KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, password);
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(kmf.getKeyManagers(), null, null);
SslFilter sslFilter = new SslFilter(ctx); // 在mina的acceptor中增加这个filter就可以了。
acceptor.getFilterChain().addLast("ssl", new SslFilter(createSslContext()));
java版客户端(mina)代码片段:// trust String file = "/data/tmp/ca.jks";
String keyType = "jks"; char[] password = "123456".toCharArray();
KeyStore ks = KeyStore.getInstance(keyType);
ks.load(new FileInputStream(file), password);
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
SslFilter sslFilter = new SslFilter(sslContext);
sslFilter.setUseClientMode(true); // server端是addLast , 这个却是 addFirst. 这个顺序不能搞错了。
connector.getFilterChain().addFirst("sslFilter", sslFilter);
用openssl生成的SSL证书即自签名证书,存在安全隐患,而且不受浏览器信任。最好从正规第三方证书颁发机构去申请,还不用自己弄代码那么复杂,GDCA可以申请各类型SSL证书,免费付费的都有,看你需要。
openssl生成的SSL证书也叫自签名SSL证书,签发很随意,任何人都可以签发,容易被黑客仿冒利用,不是由正规的CA机构颁发的,所以不受浏览器的信任。
而付费的SSL证书,是由受信任的CA机构颁发的,申请时会对域名所有权和企业相关信息进行验证,安全级别是比较高的,而且备受各大浏览器的信任。当然是付费的好。

阅读更多 >>>  为什么软件有个性签名

https证书生成方法,怎么生成https证书?

需要手工生成证书的情况有:
找不到可用的证书
需要配置双向SSL,但缺少客户端证书
需要对证书作特别的定制
首先,无论是在Linux下还是在Windows下的Cygwin中,进行下面的操作前都须确认已安装OpenSSL软件包。
1. 创建根证书密钥文件(自己做CA)root.key:
openssl genrsa -des3 -out root.key
输出内容为:
[lenin@archer ~]$ openssl genrsa -des3 -out root.key
Generating RSA private key, 512 bit long modulus
……………..++++++++++++
..++++++++++++
e is 65537 (0×10001)
Enter pass phrase for root.key: ← 输入一个新密码
Verifying – Enter pass phrase for root.key: ← 重新输入一遍密码
2. 创建根证书的申请文件root.csr:
openssl req -new -key root.key -out root.csr
输出内容为:
[lenin@archer ~]$ openssl req -new -key root.key -out root.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]:SiChuan ← 省的全名,拼音
Locality Name (eg, city) []:SiChuan ← 市的全名,拼音
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 []: ← 可以不输入
3. 创建一个自当前日期起为期十年的根证书root.crt:
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt
输出内容为:
[lenin@archer ~]$ openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt
Signature ok
subject=/C=CN/ST=SiChuan/L=SiChuan/O=MyCompany Corp./emailAddress=admin@mycompany.com
Getting Private key
Enter pass phrase for root.key: ← 输入前面创建的密码
4. 创建服务器证书密钥server.key:
openssl genrsa –des3 -out server.key 2048
输出内容为:
[lenin@archer ~]$ openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
….+++
…………………………………………..+++
e is 65537 (0×10001)
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key
5.创建服务器证书的申请文件server.csr:
openssl req -new -key server.key -out server.csr
输出内容为:
[lenin@archer ~]$ openssl req -new -key server.key -out server.req
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]:SiChuan ← 省名,拼音
Locality Name (eg, city) []:SiChuan ← 市名,拼音
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 []: ← 可以不输入
6. 创建自当前日期起有效期为期两年的服务器证书server.crt:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in server.csr -out server.crt
输出内容为:
[lenin@archer ~]$ openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in server.csr -out server.crt
Signature ok
subject=/C=CN/ST=SiChuan/L=SiChuan/O=MyCompany Corp./CN=www.mycompany.com/emailAddress=admin@mycompany.com
Getting CA Private Key
Enter pass phrase for root.key: ← 输入前面创建的密码
7. 创建客户端证书密钥文件client.key:
openssl genrsa -des3 -out client.key 2048
输出内容为:
[lenin@archer ~]$ openssl genrsa -des3 -out client.key 2048
Generating RSA private key, 2048 bit long modulus
……………………………………………………………………………..+++
……………………………………………………………………………………………………….+++
e is 65537 (0×10001)
Enter pass phrase for client.key: ← 输入一个新密码
Verifying – Enter pass phrase for client.key: ← 重新输入一遍密码
8. 创建客户端证书的申请文件client.csr:
openssl req -new -key client.key -out client.csr
输出内容为:
[lenin@archer ~]$ openssl req -new -key client.key -out client.csr
Enter pass phrase for client.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]:SiChuan ← 省名称,拼音
Locality Name (eg, city) []:SiChuan ← 市名称,拼音
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 []: ← 可以不填
9. 创建一个自当前日期起有效期为两年的客户端证书client.crt:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in client.csr -out client.crt
输出内容为:
[lenin@archer ~]$ openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in client.csr -out client.crt
Signature ok
subject=/C=CN/ST=SiChuan/L=SiChuan/O=MyCompany Corp./CN=www.mycompany.com/emailAddress=admin@mycompany.com
Getting CA Private Key
Enter pass phrase for root.key: ← 输入上面创建的密码
10. 将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx:
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
输出内容为:
[lenin@archer ~]$ 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: ← 确认密码
11. 保存生成的文件备用,其中server.crt和server.key是配置单向SSL时需要使用的证书文件,client.crt是配置双向SSL时需要使用的证书文件,client.pfx是配置双向SSL时需要客户端安装的证书文件
.crt文件和.key可以合到一个文件里面,把2个文件合成了一个.pem文件(直接拷贝过去就行了)
HTTPS认证、HTTPS证书,可以在淘宝里面找到Gworg申请。
申请HTTPS证书:
确定并且列出具体需要的域名。
进入淘宝中找到Gworg并且选择HTTPS证书。
根据提示完成HTTPS域名认证。
获得HTTPS证书并且安装到服务器。
解决办法:Gworg认证并且活动和HTTPS证书。
自己电脑生成的https证书也叫自签名证书,自从第三方CA推出免费https证书后,大家都不用自签名证书了,一是不安全,二是浏览器不信任,会提示风险。建议你去wosign等CA申请一张免费的https证书,有个ssl精灵软件可以一键部署,很简单。
可以使用OpenSSL工具生成自签名https证书,但是这种自己生成的https证书是不受浏览器信任的,浏览器还是会提示“不安全”提示,不介意使用。
可以选择正规CA机构颁发的https证书,申请流程如下:
第一步 提交CSR文件
选择要申请的SSL证书,提交订单,并将制生成的CSR文件提一起交。
第二步 提交订单到证书服务机构CA
在收到您的订单和证书请求CSR文件后,系统初步验证无误自动提交订单到证书服务机构CA。
第三步 发送验证邮件到管理员邮箱
证书服务机构Comodo / RapidSSL / GeoTrust / Symantec / Thawte 收到证书申请文件CSR 文件系统自动发送验证邮件到域名管理员邮箱。
第四步 用户确认验证邮件
点击邮件中的链接访问证书服务机构验证网站,查看订单信息,确认无误后点击我确认完成邮件验证。
第五步 证书机构签发证书
DV SSL一般在用户完成确认验证邮件后1-24小时签发证书;企业型证书OV SSL 与 增强型证书EV SSL需要证书服务机构人工验证,验证时间比较长,需要1-7个工作日验证通过后签发证书.

阅读更多 >>>  证书上姓名是什么字体

网站数据信息

"openssl生成ssl证书, 自签名 SSL 证书(self-signed SSL certificate)"浏览人数已经达到18次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:openssl生成ssl证书, 自签名 SSL 证书(self-signed SSL certificate)的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!