了解https

HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层。HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443。

SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:

  1. 数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;
  2. 用户可以通过服务器证书验证他所访问的网站是否真实可靠。

获取SSL证书

正式使用的话肯定是付钱由CA机构给颁发合法证书;部分CA机构也提供免费证书。

可申请的CA机构举例:

1、阿里云

2、StartSSL

具体申请步骤请自行查阅。

内部使用可以自己生成SSL证书(这个用户访问会提示证书无效或过期,存在安全隐患等等,内部人用直接信任继续访问即可使用),一般情况下用不到。

内部生成SSL证书步骤:

# 生成一个RSA密钥
$ openssl genrsa -des3 -out ssltest.key 1024 # 拷贝一个不需要输入密码的密钥文件
$ openssl rsa -in ssltest.key -out ssltest_nopass.key # 生成一个证书请求
$ openssl req -new -key ssltest.key -out ssltest.csr # 自己签发证书
$ openssl x509 -req -days 365 -in ssltest.csr -signkey ssltest.key -out ssltest.crt

第3步是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。

当然我这里并没有向证书提供商申请,而是在第4步自己签发了证书。到这里证书就生成成功到目标目录下,名字为ssltest.crt,还有ssltest_nopass.key,名字可以根据自己需要在生成的时候进行修改。

服务器启用https

以nginx服务器示例。我们只需要在自己网站的配置文件nginx.conf中的server端增加以下配置;

listen 443 ssl;

# ssl on;
ssl_certificate /etc/nginx/ssltest.crt;
ssl_certificate_key /etc/nginx/ssltest_nopass.key;

完整示例:

server {
listen 443 ssl;
listen 80;
server_name 52fhy.com www.52fhy.com;
index index.php index.html index.htm;
root /www/52fhy.com/; #ssl on;
ssl_certificate_key /usr/local/nginx/conf/52fhy.com.key;
ssl_certificate /usr/local/nginx/conf/1_52fhy.com_bundle.crt; if ($scheme = http) {
# rewrite ^(.*)$ https://$host$1 permanent;
} location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
} access_log /usr/local/nginx/log/access/52fhy.com.log;
}

注意:这个ssl on我本来是加上的,但是发现这样http就不能访问了,去掉后且listen 443 ssl能同时支持http和https。listen 443 ssl表示仅443端口使用ssl。

重启之后网站就可以用https访问啦,同时还支持http访问。

常见问题

网页引入的站外资源加载不了

例如页面引入了百度地图的资源,打开控制台发现使用https后加载不了,直接block了。

原因是览器默认是不允许在 https 里面引用 http 资源的。

解决办法是将http://改成相对协议//。具体使用方法为:

<img src="//domain.com/img/logo.png">

简而言之,就是将URL的协议(http、https)去掉,只保留//及后面的内容。这样,在使用https的网站中,浏览器会通过https请求URL,否则就通过http发送请求。

当然,如果站外链接的资源不支持https还是加载不了的。这时候可以采用其它方法,如使用 iframe,或者使用nginx方向代理将https转向http。

参考

1、图解https协议 - - 博客频道 - CSDN.NET

http://blog.csdn.net/yufaw/article/details/8515889

2、https 页面中引入 http 资源的解决方式 - 大前端 - SegmentFault

https://segmentfault.com/a/1190000004200361?utm_source=Weibo

网站使用https协议的更多相关文章

  1. 分享一个免费SSL证书申请网站,给网站开启https协议 | 张戈博客

    这些天,由于公司的业务需求,接触到了ssl证书和https协议.博客前几篇文章也分享了在WEB服务器上安装SSL证书,为网站开启https协议的教程,感兴趣的童鞋可以前往查看相关文章: <Lin ...

  2. IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议)

    IIS - 自动申请.部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议) 2017-12-19发布:hangge阅读:161   一.HTTPS 协议介绍 1,什么是 HTTP ...

  3. 网站转为https协议,苹果商店应用转为https协议总结

    log_format www.44755.com '$remote_addr - $remote_user [$time_local] "$request" ' '$status ...

  4. 为IIS服务器配置SSL,并设置为默认使用https协议访问网站

    要使网站支持https协议,需要SSL证书,我的服务器和域名都是在阿里云购买的,所以这里我演示阿里云获取SSL证书的方法 我先说下我的服务器环境:windows server 2012 + IIS8. ...

  5. 服务器配置https协议,三种免费的方法

    最近想搞一个网站玩玩,发布网站用https协议已经是大势所趋了.例如微信小程序,不使用https协议根本不让接入.所以,分享一下我尝试过的三种方法. 1.Linux自签(OPENSSL生成SSL自签证 ...

  6. fiddler抓取火狐浏览器上https协议请求

    前言:现在很多网站采用https协议,当打开fiddler时.浏览https协议的网站会提示不安全,若使用fiddler抓取https协议的请求,则需要向浏览器导入证书,才能抓取https协议的请求, ...

  7. IIS同时实现网站部分使用https协议访问另一部分http访问

    一:什么是https SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同 ...

  8. 大型网站的 HTTPS 实践(1):HTTPS 协议和原理

    转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重 ...

  9. 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt387 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 ...

随机推荐

  1. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  2. 对抗假人 —— 前后端结合的 WAF

    前言 之前介绍了一些前后端结合的中间人攻击方案.由于 Web 程序的特殊性,前端脚本的参与能大幅弥补后端的不足,从而达到传统难以实现的效果. 攻防本为一体,既然能用于攻击,类似的思路同样也可用于防御. ...

  3. 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  4. PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server)

    在PowerDesigner中的设计SQL Server 数据表时,要求通过vbScript脚本实现下面的功能: 主键:pk_TableName 外键:fk_TableName_ForeignKeyC ...

  5. Android Ormlite 学习笔记2 -- 主外键关系

    以上一篇为例子,进行主外键的查询 定义Users.java 和 Role.java Users -- Role 关系为:1对1 即父表关系 Role -- Users 关系为:1对多 即子表关系 下面 ...

  6. 伪共享(false sharing),并发编程无声的性能杀手

    在并发编程过程中,我们大部分的焦点都放在如何控制共享变量的访问控制上(代码层面),但是很少人会关注系统硬件及 JVM 底层相关的影响因素.前段时间学习了一个牛X的高性能异步处理框架 Disruptor ...

  7. OpenGL超级宝典笔记----渲染管线

    在OpenGL中任何事物都在3D空间中,但是屏幕和窗口是一个2D像素阵列,所以OpenGL的大部分工作都是关于如何把3D坐标转变为适应你屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的 ...

  8. 趣说游戏AI开发:曼哈顿街角的A*算法

    0x00 前言 请叫我标题党!请叫我标题党!请叫我标题党!因为下面的文字既不发生在美国曼哈顿,也不是一个讲述美国梦的故事.相反,这可能只是一篇没有那么枯燥的关于算法的文章.A星算法,这个在游戏寻路开发 ...

  9. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

  10. windows 7(32/64位)GHO安装指南(系统安装篇)~重点哦!!~~~~

    经过了前三篇的铺垫,我们终于来到了最重要的部分~~如果没看过前几篇的小伙伴们,可以出门右转~~用十几分钟回顾一下~~然后在看这篇会感觉不一样的~~~~ 下面让我们来正式开始吧 我们进入大白菜的桌面是酱 ...