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设置成不同

浙公网安备 33010602011771号