【SSL】关于自签名类型

一、背景

要保证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

使用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

关于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

你可能感兴趣的:(【SSL】关于自签名类型)