openssl实现CA自签证书和颁发数字证书

1、 测试环境准备:

CA签署服务器:192.168.2.181

WEB服务器:192.168.2.180

CA安装openssl  WEB服务器使用nginx

2、 CA生成自签证书:

2.1 为CA提供私钥

(umask 077;openssl genrsa -out private/cakey.pem 2048)

 

umask:存放CA私钥文件权限700

genrsa:使用rsa加密算法

-out:指定私钥存放位置

2048:密钥长度

2.2 生成自签证书

(umask 077;openssl genrsa -out private/cakey.pem 2048)

 

req:生成证书工具

-x509:生成一个自签署证书

-key:指定密钥文件

-out:证书位置

-days:证书期限

Common Name:很重要,部署web服务器时一定对应到web服务器的域名。

填写的信息,在/etc/pki/tls/openssl.cnf可配置默认。

/etc/pki/CA下目录结构:需手动建文件index.txt和serial

echo '01' > serial  指定起始号

touch index.txt

目前,一个自签署的CA可以使用了。

 

3、 web服务器

为Web服务器提供私钥

(umask 077;openssl genrsa 2048 > nginx.key)

 

申请证书申请请求

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

Common Name:一定要填写正确,就是客户端访问时的域名。

其他和自签署证书一样。

 

发送签署请求到CA

4、 CA签署证书

openssl ca -in /root/nginx.csr -out nginx.crt -days 3655

 

然后把nginx.crt发送给web服务器。

5、 Web服务器使用ssl

这里使用docker容器

docker run --name nginx -p 80:80 -p 443:443 -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf -v /etc/nginx/conf.d/:/etc/nginx/conf.d/ -v /etc/nginx/ssl/:/etc/nginx/ssl/ -v /var/www/python/:/var/www/python/ -d nginx

/etc/nginx/conf.d/python.conf文件配置使用ssl

server {

    listen 80;

    listen 443 ssl;

        server_name  www.mynginx.com;

   ssl_certificate /etc/nginx/ssl/nginx.crt;

        ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {

        root   /var/www/python;

        index  index.html index.htm;

         }

}

/etc/nginx结构

 

Windows配置hosts,浏览器访问:

 

原文地址:https://www.cnblogs.com/jjzd/p/7413371.html