2020-12-23-opemssl搭建CA服务器

级别概念、配置CA中心、搭建HTTPD、级别操作、签发HTTPS证书、异常问题解决

级别概念

1CA认证中心简述

CertificateAuthority的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书,包含 证书发放、证书更新、证书撤销和证书验证,用于 身份认证,数据的不可否认性

2证书请求文件

CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书的私钥签名就生成了证书文件,也就是颁发给用户的证书


配置CA中心

1)修改配置文件

vi /etc/pki/tls/openssl.cnf

找到这一行

basicConstraints=CA:FALSE

将FALSE修改为TRUE

2)生成私钥和根证书

/etc/pki/tls/misc/CA -newca

到此为止,CA认证中心便搭建好了,可通过以下命令查看生成的CA根证书

cat /etc/pki/CA/cacert.pem

查看证书私钥

cat /etc/pki/CA/private/cakey.pem

搭建HTTPD

HTTPD用于服务器之间的证书传递,非必须

1)安装

yum -y install httpd

2)修改配置文件

vim /etc/httpd/conf/httpd.conf

3)启动服务

systemctl start httpd

级别操作

1向CA机构申请证书

1)生成一个rsa的私钥

openssl genrsa -des3 -out /etc/httpd/conf.d/server.key

2)将私钥转换成请求文件

openssl req -new -key /etc/httpd/conf.d/server.key -out /server.csr

3)将请求文件发送到CA中心

scp /server.csr 192.168.94.22:/tmp/

2CA机构颁发证书

1)将请求文件进行签名

openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /tmp/server.csr -out /server.crt

2)CA中心将证书颁发给客户端

scp /server.crt 192.168.94.111:/

签发HTTPS证书

1)制作根证书私钥

openssl genrsa -des3 -out ca.key 2048

2)制作根证书公钥

openssl req -new -x509 -days 7305 -key ca.key -out ca.crt

3)制作服务器私钥

openssl genrsa -des3 -out server.key 2048

在win平台上可执行openssl rsa -in server.key -out server.key2解密

4)制作服务器的签名请求文件

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

5)将请求签名文件复制到CA中心签名

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

6)将crt格式转换成der格式(非必须)

openssl x509 -in ca.crt -outform DER -out ca.der

将der格式的证书导入移动设备

7)nginx上进行配置

将公钥、私钥防在conf目录下

server {
    listen 443 ssl;
    server_name localhost;
    ssl on;
    root html;
    index index.html index.htm;
    
    #配置证书
    ssl_certificate   server.crt;
    ssl_certificate_key  server.key;
    
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    #ssl_password_file ssl.pass;


    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    
}

异常问题解决

openssl TXT_DB error number 2 failed to update database

将index.txt中unique_subject = yes修改为unique_subject = no,或者将 common name设置成不同

posted @ 2024-03-22 17:13  SylvesterZhang  阅读(53)  评论(0)    收藏  举报