ssl证书的生成与签名

转载 2016年08月29日 10:15:25

一些概念

KEY : 私钥文件,决定ssl安全的基础
CSR : 证书请求文件,包含公钥和证书信息
CA : 中级证书颁发机构,一般是可信的第三方,CA证书会验证公钥是否被认证
root CA:通过它的私钥对中级机构提交的CSR进行了签名

申请ssl证书需要用到openssl,linux系统中默认会安装,手动安装openssl:

yum install -y openssl openssl-devel

一.生成私钥

私钥是SSL安全性的基础,使用RSA算法生成,只有证书申请者持有,即使CA也没有对私钥的访问权限,应妥善保管。私钥长度决定其安全性,2009年768位RSA已被破解,1024位RSA短期内是安全的,但随着计算机越来越快,已不足以抵御攻击,为了安全起见应尽量使用2048位RSA,生成2048位私钥:

openssl genrsa -out 52os.net.key 2048

如果对安全性要求较高,可以用密码加密密钥文件,每次读取密钥都需输入密码:

openssl genrsa -des3 -out 52os.net.key 2048

二.生成CSR

证书签名请求文件(CSR)中包含了公钥和证书的详细信息,将CSR发送给CA认证后就会得到数字证书或证书链,生成CSR文件:

openssl req -new -sha256 -key 52os.net.key -out 52os.net.csr

按照提示输入:国家、省份、城市、组织名、部门、公共名称、邮件地址等,最后的extra信息不要填写,个人用户也可以使用默认或留空,只需注意‘Common Name’是要使用ssl证书的域名,根据实际情况,可以写单域名,多个域名,或使用‘*’通配域名
验证CSR文件信息:

openssl req -noout -text -in  52os.net.csr

确认信息正确就可以提交给ca进行认证,CA会根据你的CSR文件进行签名,之后颁发数字证书,该数字证书和私钥就可以部署到服务器了;通常ca认证需付费,普通ssl证书不贵,也有一些提供免费的证书的ca,如startssl、Let's Encrypt等

三.自签名

在某些情况下,如内网https的应用,不需要付费使用第三方签名,此时就可以使用自签名证书。自签名分两种:

  1. 使用自己的私钥签发自己的csr生成证书,也可以直接生成私钥和证书
  2. 生成ca,使用ca签发

生成ca的好处是:客户只要手动信任该ca一次,即可信任该ca签发的所有证书,不需要为每个证书添加信任

3.1 使用自签名

使用上面生成的私钥签发证书:

openssl x509 -req -days 365 -in 52os.net.csr -extensions v3_ca -signkey  52os.net.key  -out 52os.net365.crt

或者直接生成私钥和证书:

openssl  req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout 52os.net.key -out 52os.net.crt

可以使用chrome浏览器导出证书并安装到windows信任证书中,安装后浏览器地址栏的https就会变成绿色。导出方法:访问https网站,点击地址栏上有红色叉的锁型图标,点击详细信息,点击查看证书,在弹出的证书窗口中点击详细信息选项卡,点击复制到文件,之后按证书导出向导的提示即可导出

3.2 使用ca签名

生成 CA:

openssl genrsa -out CA.key 2048
openssl req -new -x509 -key CA.key -out CA.cer -days 36500 -subj /CN='52os CA'

使用ca签发证书:

openssl x509 -req -in 52os.net.csr -extensions v3_usr -CA CA.cer  -CAkey CA.key  -CAcreateserial -out 52os.net.crt

为了更好的兼容浏览器,还需:

cat CA.cer >> 52os.net.crt

客户端手动信任CA.cer即可,windows下可以双击安装

参考文章:
http://www.51ean.com/interaction/safety_information_details.html?postId=585
http://blog.csdn.net/tenfyguo/article/details/40922813
http://www.wosign.com/Basic/index.htm
http://www.cnblogs.com/kyrios/p/tls-and-certificates.html

相关文章推荐

自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名

自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有...
  • sdcxyz
  • sdcxyz
  • 2015年08月03日 00:00
  • 13411

自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书

这里说下Linux 系统怎么通过openssl命令生成 证书。   首先执行如下命令生成一个key   openssl genrsa -des3 -out ssl.key 1024   然后...

自己制作ssl证书:自己签发免费SSL证书,为nginx生成自签名ssl证书

这里说下Linux 系统怎么通过openssl命令生成 证书。 首先执行如下命令生成一个key openssl genrsa -des3 -out ssl.key 1024 然后他会要求...

Java SSL 自签名证书生成

什么是HTTPS? 当使用 基于SSL/TLS(通常使用 https:// URL)向站点进行HTTP请求时,从服务器向客户机发送一个证书。客户机使用已安装的公共证书通过这个证书验证服务器的身份,然...
  • luoaz
  • luoaz
  • 2011年12月03日 11:33
  • 556

在进行网站SSL验证时申请CSR(证书签名请求)

最近在给自己公司的网站进行SSL验证的设置,对于证书的购买问题,在这里就不多说了,请参考该文章,...

轻松把玩HttpClient之配置ssl,采用设置信任自签名证书实现https

在上篇文章《HttpClient配置ssl实现https简单示例——绕过证书验证》中简单分享了一下如何绕过证书验证。如果你想用httpclient访问一个网站,但是对方的证书没有通过ca认证或者其他问...

数字证书, 数字签名, SSL(TLS) , SASL

数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结.  1. 首先推荐几个文章: ...

为你的android App实现自签名的ssl证书

为你的android App实现自签名的ssl证书

信息安全(ssl、数字证书、数字签名、加密算法)

1.前言 信息安全包括两点:一是信息的保密性,所谓的保密就是指只有你和你允许的人能看到信息。二是信息的完整性,所谓完整性就是指对方发的信息和你接收到的信息是一致的,中间没有被别人篡改过。 2....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ssl证书的生成与签名
举报原因:
原因补充:

(最多只允许输入30个字)