https访问协议的配置和使用_请使用安全协议进行访问-程序员宅基地

技术标签: https协议的配置和使用  访问协议  

以前,我们的web网站服务访问一直是以http协议为基础进行访问的!但是这种访问协议在后来的生产实践中,被认证为不安全的访问协议!之后,互联网领域针对这种不安全的访问方式,提出了https安全访问协议的方式进行访问!
在新开发的网站中,我这边都将访问协议配置为https的安全访问协议的方式访问网站!一直没有时间整理关于这方面的实践步骤!最近,时间相对比较充裕,抽出了一部分时间,整理一下这方面的东西!
一、https和http的概念
https是安全为通道的http访问协议,是在http下加入ssl加密层!http的默认端口是80 , https的默认端口是443!
SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:
1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;
2、用户可以通过服务器证书验证他所访问的网站是否真实可靠。
二、获取ssl证书
在正式的生产部署环境下,推荐从第三方CA机构处购买ssl证书!目前国内的CA机构有:
1、阿里云
2、腾讯云
3、百度
内部使用,可以按照接下来的过程进行操作:
1、自行生成ssl证书
1)、生成rsa密钥
openssl genrsa -des3 -out ssltest.key 1024
2)、拷贝一个不需要密码的密钥文件
openssl rsa -in ssltest.key -out ssltest_nopass.key
3)、生成证书请求(注意这边会提示输入信息,至少输入一个,其余的回车就好,最后让输入密码时,直接回车)
openssl req -new -key ssltest.key -out ssltest.csr
4)、自己签发证书
openssl x509 -req -days 365 -in ssltest.csr -signkey ssltest.key -out ssltest.crt
三、服务器启用https
在nginx服务器配置文件nginx.conf中添加如下配置:
listen 443 ssl;
# ssl on;
ssl_certificate /etc/nginx/ssltest.crt;
ssl_certificate_key /etc/nginx/ssltest_nopass.key;
完整配置事例:

	        user  nobody;
			worker_processes  1;
			
			error_log  logs/error.log;
			#error_log  logs/error.log  notice;
			#error_log  logs/error.log  info;
			
			pid        logs/nginx.pid;
			
			
			events {
			    worker_connections  1024;
			}
			
			
			http {
			    include       mime.types;
			    default_type  application/octet-stream;
			
			    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
			                      '$status $body_bytes_sent "$http_referer" '
			                      '"$http_user_agent" "$http_x_forwarded_for"';
			
			    access_log  logs/access.log  main;
			
			    sendfile        on;
			    #tcp_nopush     on;
			
			    #keepalive_timeout  0;
			    keepalive_timeout  65;
			
			    gzip  on;
			    gzip_disable "MSIE [1-6].";
			    
			    client_header_buffer_size 128k;
			    large_client_header_buffers 4 128k;
			    
			    upstream blogs{
			        server 127.0.0.1:8080;
			    }
			    server {
			        listen 443 ssl;
			        listen       80;
			        server_name  localhost;
			
			        #charset koi8-r;
				ssl_certificate /Users/lvhong/server.crt;
			        ssl_certificate_key /Users/lvhong/server.key;
				
			        access_log  logs/host.access.log  main;
			
			        location / {
			            root   html;
			            proxy_pass http://blogs;
			            index  index.html index.htm;
			        }
			
			        #error_page  404              /404.html;
			
			        # redirect server error pages to the static page /50x.html
			        #
			        error_page   500 502 503 504  /50x.html;
			        location = /50x.html {
			            root   html;
			        }
			
			        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
			        #
			        #location ~ \.php$ {
			        #    proxy_pass   http://server_lb;
			        #}
			
			        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
			        #
			        #location ~ \.php$ {
			        #    root           html;
			        #    fastcgi_pass   127.0.0.1:9000;
			        #    fastcgi_index  index.php;
			        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
			        #    include        fastcgi_params;
			        #}
			
			        # deny access to .htaccess files, if Apache's document root
			        # concurs with nginx's one
			        #
			        location ~ /\.ht {
			            deny  all;
			        }
			    }
			
			
			    # another virtual host using mix of IP-, name-, and port-based configuration
			    #
			    #server {
			    #    listen       8000;
			    #    listen       somename:8080;
			    #    server_name  somename  alias  another.alias;
			
			    #    location / {
			    #        root   html;
			    #        index  index.html index.htm;
			    #    }
			    #}
			
			
			    # HTTPS server
			    #
			    #server {
			    #    listen       443 ssl;
			    #    server_name  localhost;
			
			    #    ssl_certificate      cert.pem;
			    #    ssl_certificate_key  cert.key;
			
			    #    ssl_session_cache    shared:SSL:1m;
			    #    ssl_session_timeout  5m;
			
			    #    ssl_ciphers  HIGH:!aNULL:!MD5;
			    #    ssl_prefer_server_ciphers  on;
			
			    #    location / {
			    #        root   html;
			    #        index  index.html index.htm;
			    #    }
			    #}
			    include servers/*;
			}

注意:ssl on;注释掉,是为了让网站可以在使用https访问的同时也可以使用http访问!
使用中遇到的问题:
网站引入外部http网站时访问不了,直接blank,这是由于浏览器默认不允许在https中引入http,解决方案:
将http://改成相对协议//
如:< img src="//domain.com/img/logo.png" >
或者
通过iframe内部框架
或者
通过nginx的反向代理将https://转换为http://

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42863291/article/details/87341298

智能推荐

多线程-程序员宅基地

文章浏览阅读97次。多线程Java.Thread进程和线程关系及区别1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进

友盟自动集成报错-Could not download common (com.umeng.umsdk:common:2.0.0)_could not find com.umeng.umsdk:common:2.0.2.-程序员宅基地

文章浏览阅读1.2w次。当使用自动集成(非手动集成)友盟的时候在build.gradle里面:implementation 'com.umeng.umsdk:analytics:8.0.0'implementation 'com.umeng.umsdk:common:2.0.0'但是今天一直报错Could not download common (com.umeng.umsdk:common:2.0.0)..._could not find com.umeng.umsdk:common:2.0.2.

Docker 快速上手学习入门教程_docker菜鸟教程-程序员宅基地

文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程

电脑技巧:Windows系统原版纯净软件必备的两个网站_msdn我告诉你-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你

vue2封装对话框el-dialog组件_<el-dialog 封装成组件 vue2-程序员宅基地

文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_

MFC 文本框换行_c++ mfc同一框内输入二行怎么换行-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行

随便推点

Java入门基础知识点总结(详细篇)_java基础知识重点总结-程序员宅基地

文章浏览阅读2.3w次,点赞71次,收藏638次。Java入门基础知识点总结(详细篇)~~~~~目录1.1 图解1.1.1 Java基础知识点1.1.2 Java基础语法的相关内容1.2 关键字1.3 标识符1.3.1 标识符概念1.3.2 定义标识符的合法规则1.3.3 Java中的一些命名规范1.4 变量1.4.1 变量的分类1.4.2 整数类型1.4.3 浮点类型1.4.4 字符类型char1.4.5 布尔类型boolean1.5 ASci..._java基础知识重点总结

【SpringBoot】82、SpringBoot集成Quartz实现动态管理定时任务_springboot集成quratz 实现动态任务调度-程序员宅基地

文章浏览阅读3.6w次。Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB 作业预构 建,JavaMail 及其它,支持 cron-like 表达式等等_springboot集成quratz 实现动态任务调度

testNG常见测试方法_idea_java_testng 测试-程序员宅基地

文章浏览阅读550次。testNG忽略测试,跑测试用例时忽略暂时不执行的方法在@Test注释后添加false属性,不手动添加时默认是truepackage com.ngtest.suite;import org.testng.annotations.Test;public class ignoreTest { @Test //有test标签一定会被测试到,默认的属性是true public void ignore1(){ System.out.println("ignore1 执行._testng 测试

Debian11系统安装-程序员宅基地

文章浏览阅读4w次,点赞42次,收藏338次。Debian11系统安装1. 启动镜像启动镜像,进入安装界面,默认选择第一个图形化安装界面,回车2. 选择语言这里选择English语言,然后点击Continue3.选择所在位置4. 键盘布局默认American English,然后点击Continue5. 设置主机名默认主机名(hostname)为debian,点击Continue6. 设置域名设置域名(Domain name)为jamysong,这里大家可以根据自己的来设定7. 设置root账户密码这里我设置roo_debian11

Centos7重置root用户密码_centos7更改root密码-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏21次。Linux操作系统重置root口令_centos7更改root密码

STM32常用协议之IIC协议详解_正点原子stm32 iic-程序员宅基地

文章浏览阅读3.7k次,点赞9次,收藏39次。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档IIC协议详解前言一、IIC协议简介1.1 简介1.2 IIC物理层1.3 协议层1.3.1 IIC基本读写过程1.3.2 通信的起始和停止信号1.3.3 数据有效性1.3.4 地址及数据方向1.3.5 响应二、IIC特性2.1 软件模拟协议2.1.1 引言2.1.2 IIC初始化函数2.2 硬件协议二、使用步骤1.引入库2.读入数据总结前言STM32常用协议系列文章一、IIC协议简介1.1 简介IIC(Inter -._正点原子stm32 iic