概述
- 现在我们正式的去配置一个私有的CA服务器
- 真正的CA服务器在实际的生产中可能并不会用
- 在对公网的一些HTTPS服务中,通常会去买一些真正的SSL证书
- 包括阿里云或者是腾讯云等等,上面都有一些免费的SSL证书
- 这些证书也是向所谓的一个CA服务商来购买的
- 为了更好理解整个HTTPS证书的一个申请签发的一个流程
- 自己去搭建这样一个CA服务器
- 利用Nginx的服务器上去生成一个证书
- 并且让CA服务器让Nginx生成的这样一个证书正式生效
CA 配置示例
- 创建一个CA, 会找一台服务器来扮演CA这样一个角色
- 用另外一台Nginx服务器向服务器去申请这样一个证书来模拟整个过程
1 ) 1952.168.184.30 主机
-
/etc/pki/CA
- certs 证书目录
- crl 证书吊销的目录
- newcerts
- private 私钥
-
/etc/pki/tls
- openssl.cnf
- cert.pem
- certs
- misc
- private
-
关于 openssl.cnf
tsa_policy3 = 1.2.3.4.5.7#################################################################### [ ca ] default_ca = CA_default # The default ca section #################################################################### [ 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
- default_ca = CA_default 对应我们 CA_default 是我们的CA使用的配置项
- dir 是 CA 服务器的主目录
- database 主要存放签发过的证书的存放信息
- new_certs_dir 新签发的证书目录
- certificate CA 自身的签发证书,CA作为第三方,要有公信力自身也要有证书
- crlnumber 吊销证书的序列号
现在开始搭建, CA搭建命令:
- $
cd /etc/pki/CA/
进入 CA 目录 - $
(umask 077; openssl genrsa -out private/cakey.pem 1024)
- 使用 () 表示用子shell 来执行两个命令
- 使用 openssl 来生成一个私钥的信息文件
- 之后,对这个秘钥进行一个签发
- $
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
- 填入:CN, Beijing, xxx, xxx, baidu.com, baidu@gmail.com
- $
touch index.txt serial
- index.txt 存放证书相关信息
- serial 存放证书序列号
- $
echo 10001 > serial
- 这里随意写入一个序号
- 意味着证书从这个数字开始,给证书编号
- $
mkdir csr
- 存放的所有证书需要签发的证书请求
- 有一些组织机构,有一些证书过来之后,放在 csr目录下
- 需要签发的时候,在这里找对应的信息
- 之后,我们还要看 Nginx服务器 如何去生成公钥和私钥
- 接着也会生成一个证书请求,生成完证书请求之后
- 会把这样一个请求发送给现在的这个CA
- 由CA签发完之后再返回给我们的Nginx服务器
- 然后把那样一个证书配置到Nginx服务器上
- 从而实现搭建一个HTTPS服务器这样一个目的
组织向CA申请证书及CA签发证书
1 ) 1952.168.184.240 主机
1.1 组织机构申请证书:
- $
mkdir /opt/nginx/https -pv
创建目录 - $
cd /opt/nginx/https
进入目录 - $
(umask 077; openssl genrsa -out kutian.baidu.key 1024)
- 这样,在https目录下生成 kutian.baidu.key 文件
- 这是一个私钥文件
- $
openssl req -new -key kutian.baidu.key -out kutian.baidu.csr
- 基于私钥文件生成证书请求
- -key 用于指定key(私钥)
- 这个命令执行后,需要填写各类信息,如分别填入
- CN, Beijing, Beijing, kutian.baidu, IT, www.baidu.com, baidu@email.com
- 之后,会生成 csr 和 key 文件
- $
scp kutian.baidu.csr root@192.168.184.30:/etc/pki/CA/csr
- 证书请求文件发送给CA服务器
- CA 会核实你提供的上述信息
- 但是在这里不会,我们模拟而已
- 假设我们核实成功,下面进行签发
1.2 CA签署组织机构发过来的证书
- $
cd /etc/pki/CA/
- $
openssl ca -in csr/kutian.baidu.csr -out kutian.baidu.crt -days 365
- 注意,CA组织结构所在地和需要发起请求的组织结构不匹配可能会失败
- 可以修改 openssl.cnf 文件中 policy_match 相关为 optional
- 重新执行即可,提示输出 y/n 来签署,一直选择 y
1.3 从CA服务器将签署的证书发送给Nginx进行配置
- $
cd /etc/pki/CA
- $
scp kutian.baidu.crt root@192.168.184.240:/opt/nginx/https/
1.4 Nginx 服务器收到了证书
- $
cd /opt/nginx/https/ && ll
- kutian.baidu.crt
- kutian.baidu.csr
- kutian.baidu.key
配置 Nginx 的 https 服务器
- 参考:https://blog.csdn.net/Tyro_java/article/details/123488517