首页 https证书的创建过程
文章
取消

https证书的创建过程

证书

  HTTPS证书,也称为SSL(Secure Sockets Layer)证书或TLS(Transport Layer Security)证书,是一种数字证书,用于数据的加密和身份验证,确保数据在客户端和服务器之间的传输安全。HTTPS证书可以防止数据信息泄露,并确保数据的完整性,这种证书通常由受信任的数字证书颁发机构(CA)颁发,在验证服务器身份后,具有服务器身份验证和数据传输加密的功能。也可以自己创建自签名证书,但是这样是不安全的,因为自签名证书没有被验证,所以是不安全的,而且不能被浏览器识别为安全。

mmy83.online证书-01

  可以看到,这个证书的发证机构、有效期、网站信息、网站的公钥等信息。这个证书就是使用数字签名算法生成的,证书颁发机构通过私钥进行签名,客户端使用公钥进行验签。验签的过程其实就是用公钥解密的过程。

流程

  不管是自签证书还是CA证书,其实他们创建的流程基本上都是一样的,原理也是一样的,只不过CA证书具有权威性,CA证书的根证书会被内置到用户系统里,从而可以被浏览器识别为安全,而自签证书不具有权威性,更不会被内置到用户系统里,所以自签证书不能被浏览器识别为安全。

CA证书

  CA证书是由CA(证书颁发机构)创建的,CA证书具有权威性,CA证书的根证书会被内置到用户系统里,从而可以被浏览器识别为安全。

1、生成密钥对:申请者首先生成一个私钥和一个公钥。私钥用于签名和后续数据加解密,公钥用于验证签名和后续数据加解密。

2、创建CSR文件:申请者使用私钥对包含公钥和个人信息的CSR主体部分的哈希值进行签名,生成CSR文件。这个签名确保了CSR文件的完整性和真实性。

3、提交CSR文件:申请者将CSR文件提交给证书颁发机构(CA)。

4、CA验证CSR:CA使用CSR中的公钥来验证CSR文件的签名,以确保其完整性和真实性。

5、签发证书:如果验证通过,CA会使用自己的私钥对申请者的公钥进行签名,并生成一个包含申请者公钥、CA签名、有效期等信息的证书。

6、证书部署:申请者将证书部署到服务器上,以便客户端(如Web浏览器)在建立安全连接时能够获取并验证该证书。

7、证书验证:客户端(如Web浏览器)在访问网站时,会获取服务器的证书,并使用内置的CA公钥来验证证书的签名。如果验证通过,客户端就可以信任该证书,并使用证书中的公钥与服务器进行安全通信。

mmy83.online证书-02

系统内置证书

  上面两张图分别展示了mmy83.online的证书和系统内置的证书。更好地描述了系统内置的CA证书和mmy83.online的证书的关系。

自签证书

  自签证书和CA证书的区别在于,自签证书没有证书颁发机构(CA),没有权威性,所以不能被浏览器识别为安全。因为没有证书颁发机构(CA),所有这个签名的过程是自己创建CA根证书。不需要提交CSR文件。客户的访问的时候需要手动导入自己创建的CA根证书。

1、创建CA公钥私钥对:自签名需要先创建一个CA公钥私钥对。私钥用于签名,公钥创建CSR文件,创建证书,导入客户系统。

1
openssl genrsa -out rootkey.key 1024

2、创建CA的csr请求文件:使用CA私钥创建CA的csr请求文件,用于创建CA证书。

1
openssl req -new -out rootreq.csr -key rootkey.key

3、创建CA证书:使用CA私钥对CSR请求文件签名,创建CA证书。

1
openssl x509 -req -in rootreq.csr -out rootcert.cer -signkey rootkey.key -CAcreateserial -days 3650

4、生成密钥对:生成服务器端的一个私钥和一个公钥。私钥用于签名和后续数据加解密,公钥用于验证签名和后续数据加解密。

1
openssl genrsa -out serverkey.key 1024

5、创建CSR文件:使用私钥对包含公钥和个人信息主体部分的哈希值进行签名,生成CSR文件。这个签名确保了CSR文件的完整性和真实性。

1
openssl req -new -out serverreq.csr -key serverkey.key

6、使用CA证书签发服务端证书:CA会使用自己的私钥对服务端的CSR请求文件进行签名,并生成一个包含申请者公钥、CA签名、有效期等信息的证书。

1
openssl x509 -req -in serverreq.csr -out servercert.cer -signkey serverkey.key -CA rootcert.cer -CAkey rootkey.key -CAcreateserial -days 3650

7、证书部署:将服务端证书部署到服务器上,以便客户端(如Web浏览器)在建立安全连接时能够获取并验证该证书。

注:自签名证书部署到服务器后,通过浏览器访问会有不安全提示,这个时候需要把CA证书导入系统根证书并设置信任,这时候才能正常访问。

结束语

  通过上面的流程不难发现,自签名证书其实就是因为没有CA机构,所有需要自己创建一个CA证书来代替CA证书对服务端证书进行签名。此外,CA证书分为收费和免费的,收费的可以从服务商购买,免费的可以参考[ 免费的SSL证书 ]获得。

本文由作者按照 CC BY 4.0 进行授权

https原理

人工智能回答:程序员如何构建自己的护城河