共计 3193 个字符,预计需要花费 8 分钟才能阅读完成。
场景:
Nginx 使用自签 SSL 证书实现 https 连接。
方法:
第一步:使用 OpenSSL 创建证书
# 建立服务器私钥(过程需要输入密码,请记住这个密码)生成 RSA 密钥
>openssl genrsa -des3 -out server.key 1024
# 生成一个证书请求
>openssl req -new -key server.key -out server.csr
# 需要依次输入国家,地区,组织,email。最重要的是有一个 common name,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的 csr 文件交给 CA 签名后形成服务端自己的证书
#—————————————————————————————————————
Enter pass phrase for server.key: #之前输入的密码
Country Name (2 letter code) [XX]: #国家
State or Province Name (full name) []: #区域或是省份
Locality Name (eg, city) [Default City]: #地区局部名字
Organization Name (eg, company) [Default Company Ltd]: #机构名称:填写公司名
Organizational Unit Name (eg, section) []: #组织单位名称: 部门名称
Common Name (eg, your name or your server’s hostname) []: #网站域名
Email Address []: #邮箱地址
A challenge password []: #输入一个密码,可直接回车
An optional company name []: #一个可选的公司名称,可直接回车
#—————————————————————————————————————
# 输入完这些内容,就会在当前目录生成 server.csr 文件
>cp server.key server.key.org
>openssl rsa -in server.key.org -out server.key
# 使用上面的密钥和 CSR 对证书进行签名
# 以下命令生成 v1 版证书
>openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out servernew.crt
# 以下命令生成 v3 版证书
>openssl x509 -req -days 365 -sha256 -extfile openssl.cnf -extensions v3_req -in server.csr -signkey server.key -out servernew.crt
v3 版证书另需配置文件 openssl.cnf,该文件内容详见这篇《OpenSSL 生成 v3 证书方法及配置文件》http://www.linuxidc.com/Linux/2016-12/138670.htm
至此,证书生成完毕!
附常用对证书的操作:
查看 key、csr 及证书信息
openssl rsa -noout -text -in myserver.key
openssl req -noout -text -in myserver.csr
openssl x509 -noout -text -in ca.crt
不同格式证书的转换
# PKCS 转换为 PEM
> openssl pkcs12 -in myserver.pfx -out myserver.pem -nodes
# PEM 转换为 DER
> openssl x509 -outform der -in myserver.pem -out myserver.[der|crt]
# PEM 提取 KEY
> openssl RSA -in myserver.pem -out myserver.key
# DER 转换为 PEM
> openssl x509 -inform der -in myserver.[cer|crt] -out myserver.pem
# PEM 转换为 PKCS
> openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.pem -certfile ca.crt
第二步:Nginx 下 ssl 配置方法
首先,确保安装了 OpenSSL 库,并且安装 Nginx 时使用了–with-http_ssl_module 参数。
证书拷至 nginx 目录,配置如下 server
server {
listen 443 ssl;
server_name your.domain.name;
index index.html index.htm index.php;
ssl on;
ssl_certificate ssl/hotyq.com.crt;
ssl_certificate_key ssl/hotyq.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
另,还可加入如下配置实现 https 重定向
server {
isten 80;
server_name your.domain.name;
rewrite ^(.*) https://$server_name$1 permanent;
}
注意:
第一次配置 https 时必须重启 nginx 才能生效,不能 reload!
更多 Nginx 相关教程见以下内容:
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
Ubuntu 16.04 LTS 上安装 Nginx、MariaDB 和 HHVM 运行 WordPress http://www.linuxidc.com/Linux/2016-10/136435.htm
Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Linux(RHEL7.0)下安装 Nginx-1.10.2 http://www.linuxidc.com/Linux/2016-10/136484.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138669.htm