自签名证书配置

某些软件的默认行为要求https形式访问,比如harbor,而自己测试用并不需要真的申请一个证书.

一般有两种解决方案:

1. 查找改用http的方案

2.使用自签名证书,即自己给自己颁发一个证书,因为是自己给自己颁发的,只是徒有数字证书的形式,是不会被调用方认可的,所以需要手动在调用方将该证书加入信任列表.

先简述下正常证书生成的流程,方便之后理解:

1.服务器有一份私钥,用于加解密,是一份以".key"结尾的文件,这份文件永远不需要外传,服务器私有.

2.服务器将私钥对应的公钥信息,和其他认证信息打包进一个以".csr"结尾的文件,将此文件发给权威机构CA认证.

3.权威机构审核".csr"申请信息,审核通过后,生成带有权威机构签名的".crt"结尾的证书文件.

4.这份".crt"文件是可以分发出去的,调用者可以去权威机构CA处确认该文件由CA认证过,是合法的,再用".crt"中的公钥对信息加解密,与服务器通讯.


以下是创建流程,我搭建的harbor服务器,所以文件名用的harbor,可以按需自定义:

注: [服务器ip]就是需要被认证的服务器的ip,下面的配置都用[服务器ip]替代,方括号也是要被替换的

示例: [服务器ip] 一律替换成 xxx.xxx.xxx.xxx

1.生成服务器私钥,即".key"结尾文件,此文件完全是服务器私有,同时会生成向CA发起认证请求的".csr"文件,该文件需要提交给CA审核. 

openssl req -new -newkey rsa:2048 -nodes -keyout harbor.key -out harbor.csr -subj "/CN=[服务器ip]"

注: 如果是针对域名认证,此处  CN=[服务器ip]  应该替换为  CN=[域名]   

2.由于是测试环境,我直接使用ip的形式颁发证书,即被认证的就是ip,而不是域名.

这种ip形式的证书要采用SAN(Subject Alternative Name)形式,

所以需要特殊配置,创建一个配置文件openssl.cnf,下一步生成".crt"证书文件要用到这个配置文件

[ req ]
default_bits       = 2048
default_md         = sha256
distinguished_name = req_distinguished_name
x509_extensions    = v3_req
prompt             = no

[ req_distinguished_name ]
C  = US
ST = State
L  = City
O  = Organization
CN = [服务器ip]

[ v3_req ]
subjectAltName = @alt_names

[ alt_names ]
IP.1 = [服务器ip]

 

3.自己作为CA对认证请求".csr"进行认证,并生成".crt"证书

openssl x509 -req -in harbor.csr -signkey harbor.key -out harbor.crt -days 365 -extfile openssl.cnf -extensions v3_req

执行完成会生成".crt"结尾的证书文件,在需要配置证书的应用进行配置

到目前为止,在服务器上创建的应用可以被https形式访问,但访问者是不信任该证书的,因为这个证书是被自己认证的,而不是权威机构,所以需要手动将证书添加到访问者的信任列表.这里举两个常规示例:

1. 浏览器访问,我是windows系统,将上面生成的".crt"下载到本地,双击执行,一直点击下一步就行,其中一步注意一下,证书存储那项选择

->将所有证书都放入下列存储

->浏览,然后选择受信任的根证书颁发机构

安装完成后,再次打开这个需要https协议访问的ip,就会发现浏览器不再有不安全警告.

2.服务器访问,这个视具体情况,我这个是harbor服务器,需要被docker服务访问,那么就需要将".crt"添加到作为访问者的docker服务的信任列表中.

mkdir -p /etc/docker/certs.d/[服务器ip]

 创建该目录,如果是域名形式,[服务器ip]换成域名,在该目录下放置自签名的".crt"证书文件,然后重启docker,再次使用docker login [服务器ip] 就能正常登录.

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值