Windfly`s Blog-一个注重技术分享的博客
  1. 首页
  2. 技术研究
  3. 内容

linux下生成https的crt和key证书

  • 首先,了解一下证书的类型。

SSL证书包括:

  1,CA证书,也叫根证书或者中间级证书。如果是单向https认证的话,该证书是可选的。不安装CA证书的话,浏览器默认是不安全的。CA 认证分为三类:DV ( domain validation),OV ( organization validation),EV ( extended validation),证书申请难度从前往后递增,貌似 EV 这种不仅仅是有钱就可以申请的。对于一般的小型网站尤其是博客,或者在内网的测试环境中,为了验证https的一些问题,我们可以自建Root CA ,使用自签名证书来构建安全网络,所谓自签名证书,就是自己扮演 CA 机构,自己给自己的服务器颁发免费的证书。

(注:这里的证书我们用OpenSSL就可以生成,但是只有经过认证的CA机构签发的根证书才会被浏览器或其它设备信任,做法就是预先在浏览器或系统里内置可信的根证书。)

  2,服务器证书,必选项。通过key,证书请求文件csr,再通过CA证书签名,生成服务器证书。

  3,客户端证书,可选项。若有客户端证书则是双向https验证。

以上所有证书都可以自己生成。

  • 了解linux中,约定俗成的证书文件后缀

    linux系统是不以后缀名来判断文件类型的,但是为了我们能够更好地判断文件用途,所以添加各种后缀。以下是约定成俗的后缀。

*.key:密钥文件,一般是SSL中的私钥,通常是rsa算法,分带口令和不带口令的版本;

*.csr:证书请求文件,里面包含公钥和其他信息,通过签名后就可以生成证书;用于向证书颁发机构申请crt证书时使用,服务器配置时不会用到;在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥.

*.crt, *.cert:CA认证后的证书文件,包含公钥,签名和其他需要认证的信息,比如主机名称(IP)等。

*.pem:里面一般包含私钥和证书的信息。

我们自签名证书配置,虚拟主机需要的是.crt证书,和不带口令的SSL Key的.key文件。

linux下openssl生成 签名的步骤:

公钥和私钥通常是成对出现的,有了公钥那就存在对应的私钥,通常OpenSSL,公钥是很容易从私钥中得到的,因而我们要创建证书,那我们首先要做的就是创建私钥。

  1. key的生成 (生成服务器私钥)

openssl genrsa -des3 -out server.key 2048 

这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。

可以通过以下方法生成没有密码的key:

openssl rsa -in server.key -out server.key 

server.key就是没有密码的版本了。

-genrsa:指定了生成了算法使用RSA

-desc:表示生成的key是有密码保护的(注:如果是将生成的key与server的证书一起使用,最好不需要密码,就是不要这个参数,否则其它人就会在请求的时候每次都要求输入密码)

-out:后面的参数表示生成的key的输入文件

2048:表示的是生成key的大小,单为字节(bits),看证书提供商要求,比如Godaddy规定是2048

-in : 指定要加密的文件存放路径


2. 生成CA的crt

openssl req -new -x509 -key server.key -out ca.crt -days 3650 

生成的ca.crt文件是用来签署下面的server.csr文件。 

req: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.

 -rep: 指定要加密的文件存放路径

-new: 表示生成一个新证书部署请求

-x509: 专用于CA生成自签证书,如果不是自签证书则不需要此项

-key: 生成请求时用到的私钥文件

-day: 证书的有效期,单位是天,默认是365天




3. 使用第1点的key去 生成csr(certificate signing request)

openssl req -new -key server.key -out server.csr 

需要依次输入国家,地区,组织,email。最重要的点有两个,一个是域名,一定要是你的域名后缀,并且能接受邮件。另一个是common name,它代表你的证书要代表的目标,如果为你网站申请的证书,就要填写域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书

4. crt生成方法

CSR文件必须有CA的签名才可形成证书,可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢。

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

输入key的密钥后,完成证书生成。

-day: 证书的有效期,单位是天,默认是365天

-CA选项指明用于被签名的csr证书,

-CAkey选项指明用于签名的密钥,

-CAserial指明序列号文件,

-CAcreateserial指明文件不存在时自动生成。

最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt

证书合并:

cat server.key server.crt > server.pem

  linux https ssl
分享到

作者  :  windfly

本文由 windfly 原创,未经作者许可禁止转载!转载若许可请注明来自 Windfly`s Blog



评论列表