『壹』 openssl 生成ssl证书 能不能用
用openssl生成的ssl证书也叫自签名ssl证书,这种证书不建议使用,因为有很多弊端:
第一、被“有心者”利用。
其实“有心者”指的就是黑客。自签名SSL证书你自己可以签发,那么同样别人也可以签发。黑客正好利用其随意签发性,分分钟就能伪造出一张一模一样的自签证书来安装在钓鱼网站上,让访客们分不清孰真孰假。
第二、浏览器会弹出警告,易遭受攻击
前面有提到自签名SSL证书是不受浏览器信任的,即使网站安装了自签名SSL证书,当用户访问时浏览器还是会持续弹出警告,让用户体验度大大降低。因它不是由CA进行验证签发的,所以CA是无法识别签名者并且不会信任它,因此私钥也形同虚设,网站的安全性会大大降低,从而给攻击者可乘之机。
第三、安装容易,吊销难
自签名SSL证书是没有可访问的吊销列表的,所以它不具备让浏览器实时查验证书的状态,一旦证书丢失或者被盗而无法吊销,就很有可能被用于非法用途从而让用户蒙受损失。同时,浏览器还会发出“吊销列表不可用,是否继续?”的警告,不仅降低了网页的浏览速度,还大大降低了访问者对网站的信任度。
第四、超长有效期,时间越长越容易被破解
自签名SSL证书的有效期特别长,短则几年,长则几十年,想签发多少年就多少年。而由受信任的CA机构签发的SSL证书有效期不会超过2年,因为时间越长,就越有可能被黑客破解。所以超长有效期是它的一个弊端。
『贰』 如何创建一个自签名的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 []:[email protected]
第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证书可以淘宝获取。
『叁』 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 molus
.............................................................+++
.......................+++
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 molus
.............................................................+++
.......................+++
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证书
-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 生成ssl证书 能不能用
可以自己自用,但是面向全社会,是不行,因为根证书无法验证你搞的自签证书。推荐一个openssl
视频教程,里面有加密的使用,模拟CA签发证书等,还讲解了TLS/SSL协议的原理,以及在nginx等软件上的部署调优。具体链接:网页链接
『伍』 OpenSSL生成HTTPS自签名证书
之前在Windows上有用Perl编译过OpenSSL,不过只是要用它的两个静态库,这次搭一个https server还要用它来生成自签名证书,其中我的配置文件在openssl/apps/openssl.cnf,编译后openssl.exe在openssl/out32/openssl.exe,编译过程可以去网上查,资料还是挺多的。
OpenSSL默认加载配置文件路径是 /usr/local/ssl/openssl.cnf ,因此在开始前需要先设定一下'OPENSSL_CONF'环境变量:
之后就可以根据自己的需求来生成密钥和证书了,关于SSL/TLS原理此处也不多赘述,其中包含了多种非对称加密、对称加密算法,下面将罗列生成CA、server、client三方证书的步骤,但对于只做单向鉴定的情况下client证书是不必要的。
过程都是相同的,先生成1024位的RSA私钥,然后生成证书请求文件(.csr),csr文件经CA私钥签名后生成公钥(即X.509证书),如果需要的话还可以再把它导出为其他格式比如PKCS#12证书(.p12)。
『陆』 用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证书怎么安装
生成CSR。在购买和安装SSL证书之前,请先在服务器上创建CSR文件。
『捌』 用openssl生成的ssl证书和付费的有什么区别
用openssl生成的SSL证书即自签名证书,存在安全隐患,而且不受浏览器信任。最好从正规第三方证书颁发机构去申请,还不用自己弄代码那么复杂,GDCA可以申请各类型SSL证书,免费付费的都有,看你需要。
『玖』 如何利用openssl为iis生成ssl服务器证书
2.在要安加SSL服务的网站,右键打开网站属性Table. 3.选取目录安全中的服务器证书. 4.进入生成服务器证书请求的步骤中,一步步填写相应的信息。每一步相应的信息要记住,这些信息在后面要用到。二、openssl操作: 1.生成私钥。 openssl genrsa -des3 -out cakey.pem 2048 2.生成自签名根证书. openssl req -new -x509 -key cakey.pem -out cacert.pem -days 1825
此处会要求输入一些信息: Country Name: CN //两个字母的国家代号 State or Province Name: guang dong //省份名称 Locality Name: guang zhou //城市名称 Organization Name: sunrising //公司名称
Organizational Unit Name: home //部门名称 Common Name: besunny //你的姓名(要是生成服务器端的证书一定要输入域名或者ip地址) 切记一定要和IIS服务器上填写的信息保持一致。 3.在你的openssl主目录下的bin目录下创建如下目录: demoCA
demoCA/newcerts 在demoCA目录下创建一个空的index.txt文件. 在demoCA目录创建一个serial文件,文件内容为01 . 4.把第二步的生成的cakey.pem拷贝到 demoCA/private目录下; 把cacert.pem 拷贝到demoCA目录下. 5.用CA证书cacert.pem为IIS请求certreq.txt签发证书。(将iis服务器生成的certreq.txt存放在openssl/bin下面) openssl ca -in certreq.txt -out iis.cer 6.打开iis.cer,删掉在"-- Begin Certificate --"的文本。 三.IIS服务器操作: 在该网站属性中目录安全的服务器证书 ,导入该证书。 四、测试是否SSL正常。 二、配置OpenSSL1、建立自己的CA证书在openssl的apps目录下建立自己的CA证书,例如mageCAC:/openssl098b/apps>mkdir mageCA2、生成CA密钥C:/openssl098b/apps>openssl genrsa -out mageCA/ca-key.pem 1024Genrsa[产生密钥命令] –out[密钥文件输出路径] 1024[密钥位数]Loading 'screen' into random state - doneGenerating RSA private key, 1024 bit long molus..............................++++++......++++++3、生成待签名的证书C:/openssl098b/apps>openssl req -new -out mageCA/ca-req.csr -key mageCA/ca-key.pemreq[产生证书命令]-new[新生成]-out[证书文件输出路径]-key[私钥文件路径]报错:Using configuration from /usr/local/ssl/openssl.cnfUnable to load config infounable to find 'distinguished_name' in configproblems making Certificate Request2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:出现这样的问题后,打开了apps下的req查看DIAGNOSTICS: =head1 DIAGNOSTICSThe following messages are frequently asked about:? Using configuration from /some/path/openssl.cnf? Unable to load config infoThis is followed some time later by...? unable to find 'distinguished_name' in config? problems making Certificate RequestThe first error message is the clue: it can't find the configurationfile! Certain operations (like examining a certificate request) don'tneed a configurationfile so its use isn't enforced. Generation ofcertificates or requests however does need a configurationfile. Thiscould be regarded as a bug.依然不能解决问题,在网上搜索,被告知是环境变量没有设置,于是设置系统用户变量OPENSSL_CONF为C:/openssl098b/apps/openssl_cnf。重开一个命令行窗口,要求输入一系列的信息,如国家、省、市、公司、部门、姓名、电子邮件等,命令执行完成。在设置了环境变量以后,一定要另开一个命令行窗口!一开始我就是没有另开窗口,所以后来又耽误了好多时间,不过,真是因为这个错误,我才搞清楚了openssl_cnf!至于openssl_cnf,笨笨的我还在apps下找了好半天,都没有找到这个文件,后来被高手告知就是那个名为openssl的计算机图标一样的文件,是可以用写字板打开的!狂晕!还有人说是在ssl目录下,但是我的不是!
『拾』 什么是自签名SSL证书
自己生成的SSL证书,不是CA机构颁发的SSL证书,称之为自签名证书。
解释原因:回
自签署的SSL证书:不会被浏览器信任,数据被泄漏级劫持安全漏洞安全风险较高。
自签名主要风险:
浏览器的地址栏会提示风险不安全网站。
小程序或APP无法应用与支持。
无法实现信用与接口交易行为。
网页会被劫持,被强制插入广告或跳转到其它网页。
用户数据明文传输,隐私信息被中间劫持。
极容易被劫持和钓鱼攻击。
自签名安全隐患:
自签证书最容易受到SSL中间人攻击
自签证书支持不安全的SSL通信重新协商机制
自签证书支持非常不安全的SSL V2.0协议
自签证书没有可访问的吊销列表
自签证书使用不安全的1024位非对称密钥对
自签证书证书有效期太长
自签证书普遍存在严重的安全漏洞,极易受到攻击
解决方法:Gworg申请可信SSL证书。