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

构建一个web方式的局域网签名

当需要大量签名的工作,同时又多用户使用,但又想把签名证书进行一定限制时,下面就实现了这样一个简单的方案。 需要一台IIS server, 共享一个文件夹(读写)。在IIS 上创建一个asp.net w...
  • durone
  • durone
  • 2006年12月15日 10:46
  • 760

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

这里说下Linux 系统怎么通过openssl命令生成 证书。   首先执行如下命令生成一个key   openssl genrsa -des3 -out ssl.key 1024   然后...
  • babydavic
  • babydavic
  • 2012年12月27日 11:49
  • 20077

Nginx生成一个自签名的SSL证书脚本

  • 2015年11月18日 13:15
  • 969B
  • 下载

Windows系统下创建自签名ssl证书

这篇博文中主要讲述如何在windows系统中创建本地SSL证书。1.环境准备1.1 系统环境:windows xp及以上1.2 软件环境:openssl-0.9.8k_WIN32下载地址1: 七牛云...
  • huplion
  • huplion
  • 2016年10月22日 16:02
  • 5864

https SSL 自建证书的制作

客户端认证服务器: 正规的做法是:到国际知名的证书颁发机构,如VeriSign申请一本服务器证书,比如支付宝的首页,点击小锁的图标,可以看到支付宝是通过VeriSign认证颁发的服务器证书: ...
  • Erice_e
  • Erice_e
  • 2016年12月06日 13:47
  • 8189

使用自签名SSL证书配置HTTPS,解决浏览器提示不安全警告

项目测试过程中需要将应用从HTTP升级到HTTPS,浏览了网上一些帖子,参考《WebLogic11g-单双向SSL配置(以Springside3为例)》一文使用openssl工具来自建CA,并对秘钥进...
  • Coding_Zhu
  • Coding_Zhu
  • 2017年04月20日 15:47
  • 9825

简述数字签名 数字证书 以及 https

翻译自http://www.youdzone.com/signature.html 1 鲍勃有两把钥匙,一把是公钥,另一把是私钥。2 鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。3 苏...
  • gusgao
  • gusgao
  • 2016年12月25日 15:56
  • 819

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

转载地址:http://blog.csdn.net/xiaoxian8023/article/details/49866397 在上篇文章《HttpClient配置ssl实现https简单示例—...
  • wanglha
  • wanglha
  • 2016年04月13日 10:52
  • 1115

使用Keytool工具生成证书Keystore和证书签名请求文件

keytool的几个常用的命令。 1.创建证书 2.查看证书库 3.导出证书文件 4.导入证书的信息 5.查看证书信息 6.删除密钥库中的条目 7.修改证书条...
  • u014386474
  • u014386474
  • 2016年07月22日 16:15
  • 10073

ssl证书的生成与签名

一些概念 KEY : 私钥文件,决定ssl安全的基础 CSR : 证书请求文件,包含公钥和证书信息 CA : 中级证书颁发机构,一般是可信的第三方,CA证书会验证公钥是否被认证 root ...
  • xp5xp6
  • xp5xp6
  • 2016年08月29日 10:15
  • 496
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ssl证书的生成与签名
举报原因:
原因补充:

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