一些概念

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的应用,不需要付费使用第三方签名,此时就可以使用自签名证书。自签名分两种:

使用自己的私钥签发自己的csr生成证书,也可以直接生成私钥和证书
生成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

 

推荐阅读:  什么是CSR以及CSR的作用和生成    SSL的工作原理是怎样的

关于我们