摘要:实际情况中,内部系统的互相通信使用,往往不可能向公有申请证书申请证书需要很高的费用,故我们需要创建一个私有来申请证书实现通信。
前言
https相较于http而言有很大的安全性,当我们一个服务开启https并与之通信时,往往需要证书的认证,如果是浏览器访问服务,只要在浏览器内设置信任证书即可,而如果是程序内访问服务(如java程序),则需要导入该服务的证书所信任的证书。
实际情况中,内部系统的互相通信使用https,往往不可能向公有CA申请证书(申请证书需要很高的费用),故我们需要创建一个私有CA来申请证书实现https通信。
名词介绍 CA和证书认证详见我的一篇博文:https简单解读
实现步骤 环境介绍64位 centos 7.X操作系统
装有openssl命令
构建私有CACA要给别人签发证书,首先自己得有一个作为根证书,我们得在一切工作之前修改好CA的配置文件、序列号、索引等等。
输入以下命令更改配置文件:
vi /etc/pki/tls/openssl.cnf
配置文件更改以下部分:
[ CA_default ] dir = /etc/pki/CA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. #unique_subject = no # Set to "no" to allow creation of # several ctificates with same subject. new_certs_dir = $dir/newcerts # default place for new certs. certificate = $dir/cacert.pem # The CA certificate serial = $dir/serial # The current serial number crlnumber = $dir/crlnumber # the current crl number # must be commented out to leave a V1 CRL crl = $dir/crl.pem # The current CRL private_key = $dir/private/cakey.pem # The private key RANDFILE = $dir/private/.rand # private random number file ... default_days = 3650 # how long to certify for ... # For the CA policy [ policy_match ] countryName = match stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional
在/etc/pki/CA目录创建两个文件index.txt和serial:
cd /etc/pki/CA && touch index.txt serial && echo 01 > serial
仍在当前目录下生成一个CA私钥cakey.pem和自签证书cacert.pem:
openssl genrsa -out private/cakey.pem 2048 openssl req -new -x509 -key private/cakey.pem -out cacert.pem
生成公钥的时候会提示输入一些信息,例子如下:
Country Name (2 letter code) []:CN #国家名 State or Province Name (full name) []:hangzhou #省份名 Locality Name (eg, city) []:hangzhou #地名 Organization Name (eg, company) []:company #公司名 Organizational Unit Name (eg, section) []:unit #部门名 Common Name (eg, your websites domain name) []:localhost #服务域名 Email Address []: #电子邮件
后面一些信息可按回车略过
这里比较重要的是Comman Name填写的是服务的域名地址,即如果该证书用于某个服务则填该服务的域名地址(如用于百度服务器,则填写www.baidu.com)
本方案的CA证书不用于某个服务,故可填localhost
私有CA签署证书为一个服务生成私钥server.key和一个证书请求文件server.csr:
openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr
生成证书请求文件时,仍会提示输入一些信息,例子如下:
Country Name (2 letter code) []:CN #国家名 State or Province Name (full name) []:hangzhou #省份名 Locality Name (eg, city) []:hangzhou #地名 Organization Name (eg, company) []:company #公司名 Organizational Unit Name (eg, section) []:unit #部门名 Common Name (eg, your websites domain name) []:XXX.XXX.XXX #服务域名 Email Address []: #电子邮件
这里的Common Name就应该填你实际服务所用的域名了
下面将该证书请求文件server.csr由你构建的私有CA签署,生成一个server.crt证书:
openssl x509 -req -in server.csr -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -out server.crt
到此为止,server.crt证书可用于服务提供https访问,客户端若想访问该服务,导入CA根证书cacert.pem即可。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72734.html
摘要:常见的对称加密算法密钥长度可选等非对称加密非对称加密,密钥成对出现,一公一私。申请者将自己的公钥和个人站点信息发送给,请求其做认证。定义了证书的结构以及认证协议标准,目前使用的是第三版。 对称加密 对称加密中加密和解密使用相同的密钥,加解密速度快,算法公开,计算量小。 showImg(https://segmentfault.com/img/bVbp5uW); 使用对称加密,交易双方都...
阅读 2047·2023-04-25 22:58
阅读 1367·2021-09-22 15:20
阅读 2624·2019-08-30 15:56
阅读 1930·2019-08-30 15:54
阅读 2040·2019-08-29 12:31
阅读 2681·2019-08-26 13:37
阅读 549·2019-08-26 13:25
阅读 2037·2019-08-26 11:58