Nginx下配置,SSL For Free网站获取Let's Encrypt免费SSL证书

文章来源:I am a slow walker,but I never walk backwords.

注册了个小程序,发现后台必须走HTTPS协议,经朋友介绍,可以在 ssl for free 免费申请证书,尝试了下,并且配置到了服务器,但是中间也遇到问题,记录下.

一、申请证书

SSl For Free

1.输入域名创建证书

创建证书。

2.证书文件获取

选择手动上传验证文件,获取证书

手动上传验证文件

获取验证文件,并在网站跟目录创建目录mkdir -p .well-known/acme-challenge,把下载的文件上传到该目录

验证文件上传

3.证书下载

证书下载下来包含三个文件private.key,certificate.crt,ca_bundle.crt.

Nginx 的ssl配置要求证书文件是一个,需要把certificate.crt,ca_bundle.crt合并.我刚开始根据这个教程进行合并处理Nginx ssl,用linux下的cat命令进行合并,一直报错

SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line

合并的有问题,证书文件的尾部分隔符出错.我改成使用notepad++,对两个文件进行合并处理.结果如下图


二、Nginx 配置

1.方式一(http跳转到https配置):

配置参考如下

#
# The default server
#
server {
        listen       443;
        server_name  test.domain.com;
        index index.php default.html default.htm default.php;
        root         /data/test.domain.com;
        ssl on;
        ssl_certificate /data/ssl/cert_chain.crt
        ssl_certificate_key /data/ssl/test.domain.com.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        error_page 404 /404.html;
                location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
                location = /50x.html {
        }
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
         }
}

注意,一定要开放443端口

因为浏览器默认是走http协议,所以建议在写个配置文件,重定向到当前https协议的web.

配置如下

server{
    listen 80;
    server_name  test.domain.com;
    rewrite ^/(.*) https://test.domain.com/$1 permanent;
}

重启nginx 。.

2.方式二(http,https同时可以访问配置):

配置如下

server{
    listen    80;
    listen    443 ssl;    # 关键配置项1
    server_name  test.domain.com;

    ssl_certificate     /data/ssl/cert_chain.crt;   # 关键配置项2 
    ssl_certificate_key     /data/ssl/test.domain.com.key;  # 关键配置项3

    index index.php;
    root  /data/test.domain.com;
    access_log  /var/log/nginx/test.domain.com_access.log  access;

    location / {
        index index.php;
        if ( !-e $request_filename){
            rewrite ^/(.*)$ /index.php?s=$1 last;
            break;
        }
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
    }

    location ~ .*\.(js|css)?$ {
        expires      30d;
    }

    location ~ .*\.(php|php5)?$ {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
}

重启nginx 。

猜你喜欢

转载自blog.csdn.net/u011132987/article/details/79697513