Nginx使用ssl模块配置HTTPS支持

时间:2021-11-04 20:00:22
默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数。
1.安装基础支持包
yum -y install openssl openssl-devel
2.备份原nginx.conf文件为nginx.conf.bak以防万一
3.安装ssl模块
cd /home/nginx-1.10.2

../configure --with-http_ssl_module

CentOS 6.5 下 安装 Tengine 执行配置命令

./configure 

时提示以下错误:

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

解决方法:

执行以下命令:

[plain]  view plain  copy
  1. yum -y install openssl openssl-devel  
执行成功之后再执行

./configure

[plain]  view plain  copy
  1. Configuration summary  
  2.   + using system PCRE library  
  3.   + using system OpenSSL library  
  4.   + md5: using OpenSSL library  
  5.   + sha1: using OpenSSL library  
  6.   + using system zlib library  
  7.   + jemalloc library is disabled  
  8.   
  9.   nginx path prefix: "/usr/local/nginx"  
  10.   nginx binary file: "/usr/local/nginx/sbin/nginx"  
  11.   nginx configuration prefix: "/usr/local/nginx/conf"  
  12.   nginx configuration file: "/usr/local/nginx/conf/nginx.conf"  
  13.   nginx pid file: "/usr/local/nginx/logs/nginx.pid"  
  14.   nginx error log file: "/usr/local/nginx/logs/error.log"  
  15.   nginx http access log file: "/usr/local/nginx/logs/access.log"  
  16.   nginx http client request body temporary files: "client_body_temp"  
  17.   nginx dso module path: "/usr/local/nginx/modules/"  
  18.   nginx http proxy temporary files: "proxy_temp"  
  19.   nginx http fastcgi temporary files: "fastcgi_temp"  
  20.   nginx http uwsgi temporary files: "uwsgi_temp"  
  21.   nginx http scgi temporary files: "scgi_temp"  

看到最后这样的输出,就是配置成功了。

make
make install
4.生成证书
可以通过以下步骤生成一个简单的证书:
首先,进入你想创建证书和私钥的目录,例如:
$ cd /usr/local/nginx/conf
创建服务器私钥,命令会让你输入一个口令:
$ openssl genrsa -des3 -out server.key 1024
创建签名请求的证书(CSR):
$ openssl req -new -key server.key -out server.csr
在这一命令执行的过程中,系统会要求您填写如下信息:
Country Name (2 letter code) 使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。
State or Province Name (full name) 省份,比如填写Shanghai
Locality Name (eg, city) 城市,比如填写Shanghai
Organization Name (eg, company) 组织单位,比如填写公司名称的拼音
Organizational Unit Name (eg, section) 比如填写IT Dept
Common Name (eg, your websites domain name):  行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 例如:pay.abc.com。 一个网站这里定义是: 
abc.com 是一个网站; 
www.abc.com 是另外一个网站; 
pay.abc.com 又是另外一个网站。 
Email Address 邮件地址,可以不填
A challenge password 可以不填
An optional company name 可以不填
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
最后标记证书使用上述私钥和CSR:
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
5.配置nginx
修改Nginx配置文件,让其包含新标记的证书和私钥:
server {
    server_name YOUR_DOMAINNAME_HERE;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;
}
重启nginx。
这样就可以通过以下方式访问:
https://YOUR_DOMAINNAME_HERE
另外还可以加入如下代码实现80端口重定向到443
server {
listen 80;
server_name www.ahggwl.com;
rewrite ^(.*) https://$server_name$1 permanent;

}