zoukankan      html  css  js  c++  java
  • Nginx下配置SSL模块,支持https

    Http与Https的区别

    HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

    HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

    HTTPS和HTTP的区别主要如下:

    1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    使用openssl生成证书

    openssl是目前最流行的SSL密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS协议的实现。

    比如生成到:/usr/local/ssl

    openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
    

    生成过程需要手动输入一些内容:

    # openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /u    sr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
    Generating a 2048 bit RSA private key
    ...............................................................................+    ++
    ...............+++
    writing new private key to '/usr/local/ssl/nginx.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:beijing
    Locality Name (eg, city) [Default City]:beijing
    Organization Name (eg, company) [Default Company Ltd]:xxxx
    Organizational Unit Name (eg, section) []:xxxx
    Common Name (eg, your name or your server's hostname) []:xxxx(一般是域名)
    Email Address []:xxxx@xxxx.com
    

    下面是上述命令相关字段含义:

    Country ,单位所在国家,为两位数的国家缩写,如: CN 就是中国
    State/Province ,单位所在州或省
    Locality ,单位所在城市 / 或县区
    Organization ,此网站的单位名称;
    Organization Unit,下属部门名称;也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等;
    Common Name ,网站的域名;
    Email Address ,邮箱地址
    

    Nginx安装http_ssl_module模块

    初次按照Nginx的时候,在./configure步骤时,改成./configure --with-http_ssl_module

    如果已经安装过Nginx,但是未安装http_ssl_module。按照以下步骤来:

    1.进入到解压后的源码包,如:

    cd /usr/local/nginx-1.14.1/
    
    1. 编译
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    

    这里的路径可自定义
    3. make:

    make
    

    千万不要执行make install,否则就覆盖安装了。
    4. 备份原有的nginx,如:

    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak
    
    1. 然后将刚刚编译好的nginx覆盖掉原有的nginx(nginx需要停止)
    cp ./objs/nginx /usr/local/nginx/sbin/
    
    1. 查看安装情况,如图所示即安装ssl模块成功:
    /usr/local/nginx/sbin/nginx -V
    

    nginx配置https

    贴部分配置信息:

    	server {
    		ssl on;
    		listen 443;
    		server_name localhost;
    		ssl_certificate /usr/local/ssl/nginx.crt;
    		ssl_certificate_key /usr/local/ssl/nginx.key;
    		ssl_session_cache    shared:SSL:1m;
    		ssl_session_timeout  5m;
    	
    		server_tokens off;
    		
    		fastcgi_param   HTTPS               on;
    		fastcgi_param   HTTP_SCHEME         https;
    		access_log /usr/local/nginx/logs/httpsaccess.log;	
    	}
    

    检验配置文件正确性:

    /usr/local/nginx/sbin/nginx -t
    

    重启nginx:

    /usr/local/nginx/sbin/nginx -s reload
    

    访问https://localhost

  • 相关阅读:
    tensorflow的日常Demo
    docker 搭建Mysql集群
    简单版nginx lua 完成定向流量分发策略
    简单版nginx lua 完成流量上报于中间件
    redis 数据备份持久化方案
    nginx 场景业务汇总 (中)
    nginx 场景业务汇总 (初)
    Sentinel 哨兵 实现redis高可用
    工地信息化——施工现场网格化管理系统实施小记
    小记 xian80 坐标转换 wgs84
  • 原文地址:https://www.cnblogs.com/mingyue5826/p/10782950.html
Copyright © 2011-2022 走看看