yum https ssl双向认证 证书申请

    本文将着重介绍从ssl证书申请到搭建yum使用https双向认证完成rpm包安装的流程,具体https双向认证的原理在这不做详细的描述,认证的详细描述的原理可以参考: https://blog.csdn.net/duanbokan/article/details/50847612

以下是详细流程:

一. 申请证书

1. 搭建自己的CA服务器

制作本地的CA:

     /etc/pki/CA目录,就是CA默认的工作目录

     /etc/pki/tls/openssl.conf   是openssl的配置文件

     /etc/pki/CA/private         存放我们自己建的CA的私钥

    

     cd /etc/pki/tls

     vi openssl.conf

     找到[ CA_default ]行:

     把"dir =  ../../CA"改为"dir = /etc/pki/CA,即把我们CA的工作目录使用绝对路径来定义

    

    cd /etc/pki/CA

   

    (umask 077; openssl genrsa 2018 > private/cakey.pem)  

    创建这个文件,并直接更改它的权限;文件的名字是固定的,配置文件中定义好的,cakey.pem是用于存放CA自己的私钥,CA虽然是授权的发证单位,但自己也要有私钥来实现数字签名,来区分不同的CA

    openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

    会自动提取到公钥,创建cacet.pem这个证书,这个证书是CA本身的证书,格式为x509。以后CA就可以给别人发证了。

    req:申请证书

    -new:表示是新发的申请

    -x509:指定我们的CA证书的格式

    -key:指定一个私钥文件

    -out:从我们知道的私钥中提取公钥信息,并保存至cacert.pem文件中

-days:指定证书的有效期

命令执行之后会出现这些信息让填入:

第一个:我们要创建的CA所在的国家,两个字符

第二个:我们要创建的CA所在的省份

第三个:我们要创建的CA所在的城市

第四个:我们要创建的CA的公司名称

第五个:CA申请者所在的部门

第六个:我们要创建的CA服务器

第七个:我们要创建的CA的邮箱

    mkdir certs crl newcerts

    certs 为所签证书的目录

    crl为 所吊销的证书的目录

    newcerts  要签的新证书的目录

    touch index.txt serial crlnumber

    echo 01 > serial

    echo 01 > crlnumber

    通过这几个步骤,我们创建了CA必须的几个文件,至此我们的CA服务器就建好了

2. 申请服务端公钥及证书

生成服务端key server.key

openssl genrsa -out server.key 1024

生成服务端请求文件 server.csr

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

填入证书配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)
State or Province Name (full name) [Some-State]:cq 省
Locality Name (eg, city) []:cq 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:gs 公司名
Organizational Unit Name (eg, section) []:gs  组织或部门名
Common Name (eg, YOUR name) []:test.com  域名(尽量用服务器域名,不然会引起服务器警告)
Email Address []:   邮箱地址
A challenge password []:123456 密码
An optional company name []:gs  公司名

生成服务端证书server.cer

openssl x509 -req -in server.csr -out server.cer -signkey server.key -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -days 3650

3. 生成客户端公钥及证书

生成客户端key client.key:

openssl genrsa -out client.key 1024

生成客户端请求文件client.csr

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

填入证书配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)
State or Province Name (full name) [Some-State]:cq 省
Locality Name (eg, city) []:cq 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:gs 公司名
Organizational Unit Name (eg, section) []:gs  组织或部门名
Common Name (eg, YOUR name) []:tyl  签发机构\开发者人员(这里随意)
Email Address []:   邮箱地址
A challenge password []:123456 密码
An optional company name []:gs  公司名

生成客户端证书 client.cer:

openssl x509 -req -in client.csr -out client.cer -signkey client.key -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -days 3650

生成客户端p12格式根证书client.p12(可弄可不弄):

openssl pkcs12 -export -clcerts -in client.cer -inkey client.key -out client.p12

二.搭建一个nginx 服务器:

把步骤一中生成的服务器公钥server.key以及证书server.crt放置/etc/nginx/conf.d目录下。

创建一个repo源,以/usr/local/test目录为根目录,首先我在/usr/local/test目录下弄了两个rpm包:

yumdownloader lrzsz-0.12.20-36.el7.x86_64
yumdownloader logstash-5.6.5.rpm

创建repo源

createrepo /usr/local/test

在/etc/nginx/conf.d下创建一个test_yum.repo文件:

server {
    listen 443 ssl;
    ssl on; 
    ssl_certificate conf.d/server.crt;
    ssl_certificate_key conf.d/server.key;
    ssl_prefer_server_ciphers on; 
    ssl_session_timeout 5m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
    
    # 开启客户端认证
    ssl_client_certificate cacert.pem;
    ssl_verify_client on;

    server_name test.yum.com;
    index index.php index.html index.htm;

    location / { 
        root /usr/local/test;
    }   

}

检查nginx语法是否有问题:

nginx -t

重新加载nginx配置文件

nginx -s reload

三. yum repo测试

找一台测试机,绑定域名解析,在Linux系统下,可直接在/etc/hosts文件中添加域名到nginx机器ip的指定,以便于寻找到我们刚才搭建的nginx服务器。

在/etc/yum.repos.d目录下添加一个repo配置文件localyum.repo:

[localyum]
name=localyum
baseurl=https://test.yum.com/
failovermethod=priority
enabled=1
gpgcheck=0
sslverify=1
sslclientcert=/root/test/ssl/client/client.cer
sslclientkey=/root/test/ssl/client/client.key
sslcacert=/etc/pki/CA/cacert.pem

baseurl填写https:// 加上证书申请时申请的域名test.yum.com

sslclientcert填写客户端的证书

sslclientkey填写客户端的公钥

sslcacert填写颁发证书的CA服务器的证书

清空yum的cache数据:

yum clean all

查询yum 可用rpm 包:

yum provides lrzsz

查到以下结果:

可以看到yum的确是检索到我们设置的yum源了,并且在该源中查到了我们自己添加的lrzsz的rpm包。

结束!!!

猜你喜欢

转载自blog.csdn.net/jk775800/article/details/83546939