超文本传输安全协议(Hypertext Transfer Protocol Secure,HTTPS)是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性
linux下openssl生成 x509证书,整个签名的步骤如下:
x509证书一般会用到三类文,key,csr,crt
Key 是私用密钥,通常是rsa算法。
Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
crt是CA认证后的证书文件,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证
生成证书主要使用到openssl,openssl可以用来实现秘钥证书管理、对称加密和非对称加密
生成秘钥key,运行:
openssl genrsa -des3 -out server.key 2048
会有两次要求输入密码,输入同一个即可
然后你就获得了一个server.key文件.
以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令:
openssl rsa -in server.key -out server.key
创建服务器证书的申请文件server.csr,运行:
openssl req -new -key server.key -out server.csr
这一步操作提示需要填写一些信息如下
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音 Locality Name (eg, city) []:BeiJing ← 市的全名,拼音 Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 Organizational Unit Name (eg, section) []: ← 可以不输入 Common Name (eg, YOUR name) []: ← 这里是你要申请的网站的域名 Email Address []:admin@mycompany.com ← 电子邮箱,可随意填 Please enter the following ‘extra’ attributes to be sent with your certificate request A challenge password []: ← 可以不输入 An optional company name []: ← 可以不输入
创建CA证书:
openssl req -new -x509 -key server.key -out ca.crt -days 3650
此时,你可以得到一个ca.crt的证书,这个证书用来给自己的证书签名.
创建自当前日期起有效期为期十年的服务器证书server.crt:
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
现在你的目录下可以看到一共生成了5个文件:
ca.crt a.srl server.crt server.csr server.key
server.crt(证书凭证,也可以较证书链)和server.key(私钥)就是nginx部署https协议需要的证书文件