• centos的nginx支持ssl


    首先看centos是否支持ssl

    输入:openssl version

    如无

    则去 http://slproweb.com/products/Win32OpenSSL.html  寻找

    生成私钥后面的1024可加密128字节长度的内容,2048可加密256字节长度的内容

    对应的命令如下:

    在ssl的根目录下操作:
    
    #此步用于生成私钥,会提示输入密码,密码后面步骤需要用到;jason.key为私钥的名字,文件名可自己定
    openssl genrsa -des3 -out jason.key 1024
    
    #此步用于生成csr证书,jason.key为上一步骤生成的私钥名,jason.csr为证书,证书文件名可自定
    #在此步过程中,会交互式输入一系列的信息(所在国家、城市、组织等),其中Common Name一项代表nginx服务访问用到的域名,我这里是本地测试,所以可以随意定一个jason.com,并在本地host文件中将此域名映射为127.0.0.1
    openssl req -new -key jason.key -out jason.csr
    
    #此步用于去除访问密码,如果不执行此步,在配置了ssl后,nginx启动会要求输入密码
    #jason.key为需要密码的key,jason-np.key为去除访问密码的key文件
    #操作过程中会要求输入密码,密码为生成key文件时的密码
    openssl rsa -in jason.key -out jason-np.key
    
    #此步用于生成crt证书
    #jason.crt为第2步生成的csr证书名称,jason.crt为要生成的证书名称
    openssl x509 -req -days 366 -in jason.csr -signkey jason-np.key -out jason.crt
    View Code

    输入国家系列信息:

    server {
            listen       443 ssl;
            server_name  service.youhui168.xin;
    
        ssl        on;
            ssl_certificate      ../ssl/shopService.crt;
            ssl_certificate_key  ../ssl/shopService-np.key;
    
            #ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            #ssl_ciphers  HIGH:!aNULL:!MD5;
            #ssl_prefer_server_ciphers  on;
    
        error_log  /usr/local/nginx/logs/error2.log  error;
        location / {     
            proxy_redirect off;
            proxy_set_header   Host    $host;     
            proxy_set_header   X-Real-IP   $remote_addr;     
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:8080/service/;
        }
        }

    注意阿里云里面要配置好对应的入方向的443的端口规则

    http://localhost:8080/service/   对应的是tomcat启动的那个service项目

    如此,https访问成功

    如还不成,应该是服务器的防火墙问题了:
    netstat -anp 查看防火墙开的端口 

    发现已经在监听了,那肯定是配置问题。 
    检查配置没问题,重新生成证书等方法也还是无法访问,甚至在别的机器上https的配置copy过来依然无法访问

    冷静下来想想,nginx都没有返回状态吗,直接无法连接。这到底请求到了吗?

    只能进入防火墙配置文件看看了 
    vim /etc/sysconfig/iptables 

    问题就在这里了,开放端口一定要在 
    -A INPUT -j REJECT –reject-with icmp-host-prohibited 
    这句的前面,的前面,的前面!!!

    原因是这条规则的作用是拒绝所有-j REJECT 在iptables帮助文档里面有一下说明This is used to send back an error packet in response to the matched packet

    就是表明拒绝你,并返回一个错误连接信息。请求没到nginx那,肯定没有状态码返回,同时你的浏览器返回的只能是无法连接。

    ===============================================================
    另一个test例子
    证书同上配置
    nginx的配置是:
    server {
            listen       443 ssl;
            server_name  test.youhui168.xin;
            ssl_certificate      ../ssl/test.crt;
            ssl_certificate_key  ../ssl/test-np.key;
            #ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
            location / {
             proxy_redirect off;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://localhost:80/;
            }
        }
        
        server {
            listen 80;
            server_name test.youhui168.xin;
            root /home/wwwroot/test;
            index index.php;
    
            location ~ .php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  PHP_VALUE        open_basedir=$document_root:/tmp/:/proc/;
                include        fastcgi_params;
            }
    
        }
    View Code
    如此,https访问成功


  • 相关阅读:
    原生js 实现 map
    前端安全学习
    前端性能优化
    前端的跨域请求方法使用场景及各自的局限性
    7-7 12-24小时制(15 分)
    7-4 BCD解密(10 分)
    7-2 然后是几点(15 分)
    厘米换算英尺英寸
    鸡兔同笼
    数组:经典计数
  • 原文地址:https://www.cnblogs.com/zenggl/p/8033411.html
Copyright © 2020-2023  润新知