当前位置: 首页> 教育> 锐评 > Nginx: 搭建HTTPS服务器(私有CA服务器的搭建,Nginx公私钥生成,证书签发和配置)的过程

Nginx: 搭建HTTPS服务器(私有CA服务器的搭建,Nginx公私钥生成,证书签发和配置)的过程

时间:2025/7/13 4:07:41来源:https://blog.csdn.net/Tyro_java/article/details/141715296 浏览次数:0次

概述

  • 现在我们正式的去配置一个私有的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
关键字:Nginx: 搭建HTTPS服务器(私有CA服务器的搭建,Nginx公私钥生成,证书签发和配置)的过程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: