美文网首页
nginx使用ssl模块配置HTTPS支持

nginx使用ssl模块配置HTTPS支持

作者: zhong | 来源:发表于2018-01-03 18:14 被阅读0次

    默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,参见 nginx的编译安装

    以下默认nginx已正确安装,且加载了ssl模块。

    1. https的单向认证和双向认证

    从我的理解来说,http和https的主要区别在于,是否持证上岗!怎么理解?比如说有两个银行,一个有国家颁发的银行业资质证,另一个没有(记得南京某年曾经发生过一个假银行的大案)。有证的就是https,持有一个具有公信力的机构颁发的证书,让我对他更相信一些,所以在存款的时候我会更相信有证的这个。特别是在电信诈骗尤为严重的今天,https的网站能给你更多安全感,仅此而已。
    什么是单向认证和双向认证?还以存钱来说,你去存钱,要银行出示从业资格证,他提供了,你核对国家提供的证书编号发现是真的,然后你把钱存进去,这就是单向验证;你验证完银行是真的,然后银行要你提供身份证,通过你的身份证号查到你的存款账户确实是这个,于是同意你把钱存进去,这就是双向验证。
    显然,双向验证更安全但麻烦,单向验证很多时候就足够使用了。因此大部分情况下都是单向验证,除了少数对安全有苛刻要求的环境,比如银行。

    2. 证书生成

    证书一般是由几个具有公信力的大机构来提供,这样可以保证证书的权威性和公信力——收费的。由于是本地测试,这里我们自己生成个证书用,当然不会被别人认可,但是测试够用了~
    a. 进入想要创建证书和秘钥的目录,一般是nginx的conf目录下,如:

    cd /usr/local/nginx/conf
    

    创建服务器私钥,执行以下命令,会让你输入一个口令,要记住它:

    openssl genrsa -des3 -out server.key 1024
    

    创建签名请求的证书(CSR):

    openssl req -new -key server.key -out server.csr
    

    这里执行后会让你填写一些服务器相关信息,如域名、公司等数据
    在加载SSL支持的nginx并使用上述私钥时除去必须的口令:

    cp server.key server.key.org
    openssl rsa -in server.key.org -out server.key
    

    最后标记证书使用上述私钥和csr:

    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    

    3. nginx配置

    修改Nginx配置文件,让其包含新标记的证书和私钥,注意,https默认端口为443,不是80:

    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 ww.centos.bz;
        rewrite ^(.*) https://$server_name$1 permanent;
    }
    

    相关文章

      网友评论

          本文标题:nginx使用ssl模块配置HTTPS支持

          本文链接:https://www.haomeiwen.com/subject/htcknxtx.html