【SSL】关于自签名类型

9 篇文章 0 订阅

一、实验背景

要保证Web浏览器到服务器的安全连接,HTTPS几乎是唯一选择。

HTTPS其实就是HTTP over SSL,也就是让HTTP连接建立在SSL安全连接之上。

当由于某种原因(如:不想通过CA购买证书,或者仅是用于测试等情况),无法正常获取CA签发的证书。

这时可以生成一个自签名证书。使用这个自签名证书的时候,会在客户端浏览器报一个错误,签名证书授权未知或不可信(signing certificate authority is unknown and not trusted.)。

 

二、自签名分类

 

三、自签名和私有CA签名测试

 

自签名证书

# vim  self-signed.sh

#####################################################################

#!/bin/bash

openssl req -x509 -nodes \

  -sha512  \

  -newkey rsa:2048 \

  -days 3650 \

  -subj "/C=CN/ST=Gunagdong/L=Shenzhen/O=Test/OU=Test/CN=www.example.com" \

  -keyout self-signed.key \

  -out    self-signed.crt

##########################################################################

# sh  self-signed.sh 

# openssl x509 -noout -text -in self-signed.crt

 

自签名证书的Issuer和Subject是相同的。

 

 

私有CA签名证书

 

# vim ca-self-signed.sh

###################################################

#!/bin/bash

openssl req -x509 \

  -nodes \

  -newkey rsa:4096 \

  -days 3650 \

  -sha256 \

  -subj "/C=CN/ST=Gunagdong/L=Shenzhen/O=CA/OU=CA/CN=www.ca.com" \

  -keyout ca.key \

  -out    ca.crt

openssl req \

  -nodes \

  -newkey rsa:4096 \

  -sha256 \

  -keyout harbor.key \

  -subj "/C=CN/ST=Gunagdong/L=Shenzhen/O=Test/OU=Test/CN=www.harbor.com" \

  -out harbor.csr

echo "

authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

subjectAltName=IP:192.168.1.105,DNS:www.harbor.com

" > extfile.cnf

openssl x509 -req \

  -days 3650 \

  -in harbor.csr \

  -CA ca.crt \

  -CAkey ca.key \

  -CAcreateserial \

  -extfile extfile.cnf \

  -out harbor.crt

###################################################

# sh ca-self-signed.sh

# openssl x509 -noout -text -in harbor.crt

私有CA签名证书的Issuer和Subject是不同的。

 

四、数字证书(Certificate)

在HTTPS的传输过程中,有一个非常关键的角色–数字证书,那什么是数字证书?又有什么作用呢?

所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。

数字证书拥有以下几个优点:

使用数字证书能够提高用户的可信度;

数字证书中的公钥,能够与服务端的私钥配对使用,实现数据传输过程中的加密和解密;

在证认使用者身份期间,使用者的敏感个人数据并不会被传输至证书持有者的网络系统上;

五、证书信息查看

查看私钥信息

# openssl rsa -noout -text -in server.key 

 

查看签名请求信息

# openssl req -noout -text -in server.csr 

 

查看ca的私钥信息

# openssl rsa -noout -text -in ca.key 

 

查看证书信息

openssl x509 -noout -text -in ca.crt 

 

查看一个证书吊销列表信息

# openssl crl -text -in   xx.crl 

 

查看一个证书的额外信息

# openssl x509 -purpose -in  cacert.pem 

 

从一个私钥里面提取出公钥

openssl rsa -in key.pem  -pubout  -out  pubkey.pem 

从生成的证书文件中提取出公钥文件

# openssl x509 -outform PEM -in self-signed.crt -pubkey -noout > self-signed.pub

查看一个公钥的信息

openssl rsa -noout -text -pubin -in apache.pub 

验证一个证书是否是某一个CA签发

# openssl verify  -CAfile  /path/to/ca.crt   apache.crt  

 

模拟一个ssl客户端访问ssl服务器

# openssl s_client -connect 192.168.1.105:8443 < /dev/null

如果服务端要求客户端提供证书  则在加上 -cert 和-key参数 比如 :

# openssl s_client -connect 192.168.1.105:8443  -cert  /path/to/client.crt  -key /path/to/client.key 

六、参考

 

Rancher 自签名ssl证书

https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/self-signed-ssl

 

自签名证书和私有CA签名的证书的区别

https://blog.csdn.net/sdcxyz/article/details/47220129

x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs

https://stackoverflow.com/questions/54622879/cannot-validate-certificate-for-ip-address-because-it-doesnt-contain-any-ip-s

 

x509: certificate signed by unknown authority

https://stackoverflow.com/questions/50768317/docker-pull-certificate-signed-by-unknown-authority

 

 

使用OpenSSL生成自签名证书

https://www.lotlab.org/2018/03/28/%E4%BD%BF%E7%94%A8openssl%E7%94%9F%E6%88%90%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6

 

使用 openssl 制作一个包含 SAN(Subject Alternative Name)的证书

http://juke.outofmemory.cn/entry/211951

 

关于base64编码

https://blog.csdn.net/weixin_39460408/article/details/81835337

https://blog.csdn.net/qq_20553613/article/details/95756154

https://blog.csdn.net/wo541075754/article/details/81734770

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值