Skip to content

Nginx 配置SSL证书

OpenSSL 生成私有证书

生成私钥

bash
openssl genrsa -out server.key 2048

创建证书签名请求 (CSR)

bash
openssl req -new -key server.key -out server.csr

系统会提示你输入一些信息:

  • 国家代码(如 CN)
  • 州或省份
  • 城市
  • 组织名称
  • 组织单位(可选)
  • 通用名称(域名或服务器名)
  • 电子邮件地址(可选)

生成自签名证书

bash
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • .key:是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密

  • .csr:是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名

  • .crt:是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

配置server块

nginx
server {
    listen 443 ssl;
	server_name localhost;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ssl_session_cache shared:sslcache:20m;
    ssl_session_timeout 10m;
}
  • ssl_certificate server.crt:指定证书文件

  • ssl_certificate_key server.key:指定私钥文件

  • ssl_session_timeout 10m: 缓存的时间由ssl_session_timeout决定

  • ssl_session_cache:就是缓存ssl会话状态的缓存,它有4种模式可选,分别是:

    • off:严格的禁止使用会话缓存

    • none:宽松的禁止使用会话缓存,即虽然nginx不说不允许使用会话缓存,但实际不会将会话缓存下来

    • builtin:openssl的内置缓存,只有一个工作进程可以使用该缓存,官方指出,内置缓存,会导致内存碎片

    • shared:共享缓存,所有worker进程共享将私钥和证书,放到nginx的/usr/local/nginx/conf目录中