本文将着重介绍从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包。

结束!!!

yum https ssl双向认证 证书申请相关推荐

  1. https ssl单项认证和双向认证以及证书生成

    HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层.这里提一下TCP/IP的分层共分为四层:应用 ...

  2. HTTPS 中双向认证SSL 协议的具体过程

    HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器. ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. ③ 客户浏览器检查服务 ...

  3. 什么是SSL双向认证,与单向认证证书有什么区别?

    SSL/TLS 证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是 ...

  4. JAVA实现发送HTTPS请求(SSL双向认证)

    一.项目背景 Java项目需要作为客户端发起HTTPS请求访问服务端,并且需要携带证书进行SSL双向认证,当前提供的证书相关文件有:ca.crt.ca.key.client.crt.client.ke ...

  5. java https双向验证_java https双向认证证书

    // 双向认证证书 KeyStore keyStore = KeyStore.getInstance("PKCS12"); KeyStore trustStore = KeySto ...

  6. HTTPS|SSL笔记-SSL双向认证成功握手过程(含wireshark分析)

    这里只研究连接过程. 整体的流程是这样的 前三个那个SYN.SYN ACK.ACK是TCP三次握手,就不说了. 1. 握手成功后,客户端发送自己支持的加密套,和随机数给服务端,也就是Client He ...

  7. java客户端带证书访问服务端_客户端与服务器SSL双向认证(客户端:java-服务端:java)...

    客户端与服务器SSL双向认证(java-java):含源码 (一)实现技术: JSSE(Java Security Socket Extension) 是Sun为了解决在Internet上的实现安全信 ...

  8. 【ssl认证、证书】SSL双向认证java实战、keytool创建证书

    文章目录 概述 keytool示例 参考 相关文章: //-----------Java SSL begin---------------------- [ssl认证.证书]SSL双向认证和SSL单向 ...

  9. java代码实现证书生成客户端证书 实现ssl双向认证

    目的:实现web项目的ssl双向认证客户端证书代码生成. 使用openssl生成ca证书和服务端证书,当然也可以通过代码实现 1)创建CA私钥,创建目录ca openssl genrsa -out c ...

最新文章

  1. OpenAI教GPT-3学会上网,「全知全能」的AI模型上线了
  2. devserver配置_vue.config.js的配置
  3. 北斗通信运营商_国内首个“北斗+5G”应用方案发布 配套5G产品将于年底量产上市...
  4. 计算机的社会应用PPT,《电子计算机的发展与应用》ppt说课稿信息技术七上.ppt...
  5. java 既不是内部命令也不是外部命令的解决办法
  6. 用C#一步步写串口通信
  7. layui快速上手教程
  8. cocos2dx 精灵的移动(2)
  9. 大神李沐被曝离职!投身大模型创业,GitHub项目已开
  10. 手机棋牌游戏开发的流程是怎样的?
  11. js封装QQ音乐api
  12. SQL语句把一个表中的a字段的值赋值到另一个字段b
  13. DSF data model
  14. HTML---表格合并(详解)
  15. matlab 生成 word 表格,Matlab生成Word表格范例代码
  16. Python AutoCAD 块组
  17. LMK、ZMK、TMK、ZAK等密钥对照表
  18. Ubuntu下PyCharm安装中文汉化包
  19. 从环形图出发,打造高效数据分析流程
  20. 谁知nmn的功效与作用,nmn真实效果图,吐血整理

热门文章

  1. python与机器学习
  2. 实现一个div的背景颜色从左到右慢慢出现
  3. wince 默认输入法_winCE6.0自带中文输入法加载
  4. 安卓实现老虎机抽奖的案例
  5. Git提交gitlab项目string) [], ParseException +FullyQualifiedErrorId :UnexpectedToken 异常,commit failed
  6. thinkpad重装系统不引导_联想电脑为什么重装win7系统后引导不了
  7. 用计算机投屏图片,电脑网页投屏到电视
  8. php计算用户留存,利用Python计算新增用户留存率
  9. allergro音乐术语什么意思_rit(这是音乐术语)什么意思?
  10. 租房不要急,Python来帮您(一个超级有用的租房技巧)