Nginx certificate

Private Key

注意,以下所有操作都在同一个目录下执行

  • 创建一个私钥
1
openssl genrsa -des3 -out ca.key 2048

Public Key

  • 生成CA根证书(公钥)
1
openssl req -new -x509 -days 7305 -key ca.key -out ca.crt

-days后面的7305是指证书的有效期,以天为单位,这里设置成了20年

注意期间会让你填写common name,也就是域名,这里填入的是你的根域名,例如eaimty.com。最后,你就得到了一个根域的CA证书。

  • 生成一个给泛域名用的私钥
1
openssl genrsa -des3 -out yourdomain.com.pem 1024
  • 解密私钥
1
openssl rsa -in yourdomain.com.pem -out yourdomain.com.key
  • 生成签名请求
1
openssl req -new -key yourdomain.com.pem -out yourdomain.com.csr

common name要填入泛域名,如*.eaimty.com,这样生成的证书可以供所有子域使用。

  • 修改openssl.cnf配置

/home/linuxbrew/.linuxbrew/etc/openssl/openssl.cnf 或者 /etc/pki/tls/openssl.cnf

dir=. -> 修改为./ca,则当前执行openssl命令在ca的上层命令,如果是在ca目录里执行命令,则修改为./

  • 创建所需文件
1
2
3
4
mkdir -p ca/newcerts
touch ca/index.txt
touch ca/serial
echo "01" > ca/serial
1
openssl ca -policy policy_anything -days 7305 -cert ca.crt -keyfile ca.key -in yourdomain.com.csr -out yourdomain.com.crt

最后你会得到一个yourdomain.com.crt文件,把ca.crt中的内容粘贴到yourdomain.com.crt的最后,证书就签发完成了。

准备好yourdomain.com.crt(网站证书)和yourdomain.com.key(网站私钥),开始配置Nginx!

1
2
3
4
5
6
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/xx.crt;
ssl_certificate_key /etc/nginx/ssl/xx.key;
server_name ;
}