如何签发 OpenSSL 证书

Posted on Wed, 25 Dec 2024 10:17:08 +0800 by LiangMingJian


什么是 SSL

SSL(Secure Socket Layer),是 Netscape 所研发,利用数据加密技术来保障数据在 Internet 上的传输安全,确保数据在网络上的传输过程中不会被截取的一种通信协议。

SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。SSL 协议可分为两层:

  • SSL 记录协议(SSL Record Protocol):它建立在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  • SSL 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

进行 SSL 握手时,需要交换客户端与服务器彼此的证书。

生成私钥与证书

[root@proxy ~]# cd /usr/local/nginx/conf                                 # 进入到目录下生成证书秘钥,这里以 nginx 目录为例
[root@proxy conf]# openssl genrsa > cert.key                            # 生成私钥,文件名必须与配置文件内相同
[root@proxy conf]# openssl req -new -x509 -key cert.key > cert.pem     # 生成证书,需要输入信息
Country Name (2 letter code) [XX]: china                              # 国家
State or Province Name (full name) []:hunan                           # 省份
Locality Name (eg, city) [Default City]:changsha                      # 城市
Organization Name (eg, company) [Default Company Ltd]:xxx             # 公司名
Organizational Unit Name (eg, section) []:xxx                         # 单位名
Common Name (eg, your name or your server is hostname) []:主机名       # 主机名 hostname 查看

注意

请注意密钥文件的编码格式,在 Windows 中,密钥文件可能被编码为错误格式,需要使用记事本打开密钥文件验证编码。如果显示 UTF-8-BOM,UTF-16 等格式,则需要将其更改为 UTF-8,保存文件后,重试。