zoukankan      html  css  js  c++  java
  • HTTP转HTTPS及Nginx配置

    一、HTTP和HTTPS的基本概念
    1、HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
    2、HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
    3、HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
    二、HTTP与HTTPS有什么区别
    HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
      HTTPS和HTTP的区别主要如下:
      1、HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
      2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的ssl加密传输协议。
      3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
      4、HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
    三、HTTPS优缺点
    1、优点:
    (1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
    (2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
    (3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
    (4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。
    2、缺点
    (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
    (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
    (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
    (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
    (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。
    四、SSL生成
    SSL证书都需要专门的机构颁发,但是用可以用OpenSSL生成免费的证书。下面是生成配置命令:
    1、创建根证私钥命令: openssl genrsa -out root.key 1024

    2、创建根证书请求文件命令:openssl req -new -out root.csr -key root.key -keyform PEM
    输入这个命令后需要输入国家、省份、城市、组织机构、邮箱、密码等信息
    D: ginx-1.15.10confssl1> openssl req -new -out root.csr -key root.key -keyform PEM Common Name (e.g. server FQDN or YOUR name) []:www.rivamed.cn(192.168.111.180) 这儿需要填写域名(没有用IP地址测试)

    3、自签根证书命令:openssl x509 -req -in root.csr -out root.cer -signkey root.key -CAcreateserial -days 3650

    4、导出p12格式根证书命令:openssl pkcs12 -export -clcerts -in root.cer -inkey root.key -out root.p12

    5、生成root.jks文件命令:keytool -import -v -trustcacerts -storepass rivamed -alias root -file root.cer -keystore root.jks

    6、生成root.crt文件命令: openssl x509 -req -days 3650 -in root.csr -signkey root.key -out root.crt

    7、生成服务器端文件相关命令:

    openssl genrsa -out server.key 1024
    openssl req -new -out server.csr -key server.key
    openssl x509 -req -in server.csr -out server.cer -signkey server.key -CA root.cer -CAkey root.key -CAcreateserial -days 3650
    openssl pkcs12 -export -clcerts -in server.cer -inkey server.key -out server.p12 
    keytool -import -v -trustcacerts -storepass rivamed -alias server -file server.cer -keystore server.jks 

    五、服务端配置
    1、先将生成的server.p12文件放到项目的resources目录下。
    2、然后在application.yml 的server下加入ssl配置:

    server:
    port: 8026
    ssl:
    key-store: classpath:server.p12
    key-store-password: rivamed
    key-store-type: PKCS12
    key-alias: 1

    项目启动完成后看到日志打印http变成了https即表示HTTPS配置成功。
    [“https-jsse-nio-8026”]
    六、Nginx配置
    1、需要在nginx的conf目录下新增一个ssl文件夹,然后将root.crt、root.key两个文件放置到该文件夹下。
    2、修改nginx.conf的配置,配置详情如下:

    server {
    listen 8443;
    server_name 192.168.111.180;
    ssl on;
    ssl_certificate D://nginx-1.15.10//conf//ssl1//root.crt;
    ssl_certificate_key D://nginx-1.15.10//conf//ssl1//root.key;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    # ‘/’ 用于控制跳转到前端页面
    location / {
    root D://project//rmsmp//rmsmp//rmsmp; 
    }
    # ‘/rmApi/’ 用于将接口转发到后端服务
    Location /rmApi {
    proxy_pass https://192.168.111.180:8026;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Nginx-Proxt true;
    }
    }

    七、效果:

  • 相关阅读:
    LeetCode 326. Power of Three
    LeetCode 324. Wiggle Sort II
    LeetCode 322. Coin Change
    LeetCode 321. Create Maximum Number
    LeetCode 319. Bulb Switcher
    LeetCode 318. Maximum Product of Word Lengths
    LeetCode 310. Minimum Height Trees (DFS)
    个人站点大开发!--起始篇
    LeetCode 313. Super Ugly Number
    LeetCode 309. Best Time to Buy and Sell Stock with Cooldown (DP)
  • 原文地址:https://www.cnblogs.com/guanxiaohe/p/11727341.html
Copyright © 2011-2022 走看看