配置Nginx以https方式访问

步骤1:Create the SSL Certificatenode

sudo mkdir /etc/nginx/ssl -p
sudo openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

建立了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。nginx

参数说明:
req: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥表明that SSL and TLS adheres to for its key and certificate management.
-nodes: 告诉OpenSSL生产证书时忽略密码环节.(由于咱们须要Nginx自动读取这个文件,而不是以用户交互的形式)。
-days 36500: 证书有效期,100年
-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)
-keyout:SSL输出文件名
-out:证书生成文件名
它会问一些问题。须要注意的是在common name中填入网站域名,如wiki.xby1993.net便可生成该站点的证书,同时也能够使用泛域名如*.xby1993.net来生成全部二级域名可用的网站证书。
整个问题应该以下所示:git

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
Organizational Unit Name (eg, section) []:Ministry of Water Slides
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com
Email Address []:admin@your_domain.com

步骤2: Configure Nginx to Use SSLapi

首先配置HTTP请求重定向浏览器

server {
        listen       80;
        server_name  www.yourdomain.com;
        # 强制将http转到https
        rewrite ^ https://$http_host$request_uri? permanent;    
         #return 301 https://$http_host$request_uri;
    }

server {
        listen 443 ssl;

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        keepalive_timeout   70;
        server_name www.yourdomain.com;
        #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
        server_tokens off;
        #若是是全站 HTTPS 而且不考虑 HTTP 的话,能够加入 HSTS 告诉你的浏览器本网站全站加密,而且强制用 HTTPS 访问
        #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
        
        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;

        access_log      /var/log/nginx/wiki.xby1993.net.access.log;
        error_log       /var/log/nginx/wiki.xby1993.net.error.log;
    }

若是想同时启用HTTP和HTTPS服务器

server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

步骤3:重启nginxdom

附录一、证书格式说明
.crt:自签名的证书
.csr:证书的请求(用于向证书颁发机构申请crt证书时使用,nginx配置时不会用到)
.key:SSL Key (分为不带口令和带口令版本)。
咱们自签名证书配置nginx须要的是.crt证书,和不带口令的SSL Key的.key文件。ide

附录二、可靠的第三方SSL证书颁发机构
目前通常市面上针对中小站长和企业的 SSL 证书颁发机构有:
StartSSL
Comodo / 子品牌 Positive SSL
GlobalSign / 子品牌 AlphaSSL
GeoTrust / 子品牌 RapidSSL网站

相关文章
相关标签/搜索