昨天,本站发布了一篇名为《站长须知:HTTP迁移HTTPS时,如何避免发生重复内容问题》的文章。介绍了HTTP页面迁移到HTTPS的时候,为了避免出现重复内容的不同网站的情况,建议广大站长将所有的HTTP页面使用301重定向到对应的HTTPS,为了让更多人熟悉301重定向,本文将介绍301重定向的方式。当然大前提用户在服务器上必须要正确安装SSL证书。
301重定向
301重定向是指页面永久性移走,是网页更改地址后对搜索引擎最友好的方法。当网站发生调整,改变了网站的目录结构,网页被移到一个新地址。或者网页扩展名改变,如因应用需要把.php改成.Html或.shtml,http升级到https时都需要做301重定向,不然用户访问到的页面可能会发生404页面错误信息。
如何实现301重定向
1:IIS 服务器实现301 重定向
打开iis,创建一个站点(可以是空文件夹)成功后右键,属性>>网站,ip地址后面的高级中,将需要做301的域名绑定在主机头上。如下图
接下来还在在网站属性>>主目录。下面有3个单选项。选择 重定向到URL(U)输入目标域名url,然后点击应用,最后点击确定。这样就完成了在windows系统中iis下设置301永久重定向了。
以上的设置方法功能都比较单一,只适合网站建设初期的设置,接下来进入更强大的设置模式,适用于已经成功建站的高手们。
2:Apache 服务器实现301 重定向
在Apache 中,有个很重要的文件.htaccess,通过对它的设置,可以实现很多强大的功能,301 重定向只是其中之一。
找到
“redirect permanent / http://www.trustauth.cn:
redirect permanent /xxxx.html http://www.trustauth.cn:修改这句即可。”
3:在.htaccess文件中增加301重定向指令
采用“mod_rewrite”技术,形如:
“RewriteEngine on
RewriteRule ^(.*)$ http://www.trustauth.cn/$1 [R=301,L]”
如指定url或目录进行301重定向,须在.htaccess文件中增加以下指令
“RewriteRule ^(article/zhishu.html|zhishu)$ http://www.trustauth.cn/zhishu/ [R=301,L]\n”.
整站设置301重定向方法
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ http://www.trustauth.cn/zhishu/ [R=301,L]
</IfModule>
4:适用于使用Unix网络服务器的用户
通过此指令通知搜索引擎的spider你的站点文件不在此地址下。这是较为常用的办法。
形如:Redirect 301 / http://trustauth.cn/
5:在服务器软件的系统管理员配置区完成301重定向
适用于使用Window网络服务器的用户
绑定/本地DNS
如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题。若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置。
DNS服务器的设置
若要将blog.trustauth.cn指向trustauth.cn,则只需在DNS服务中应增加一个别名记录,可写成:blog IN CNAME trustauth.cn。
如需配置大量的虚拟域名,则可写成:* IN CNAME trustauth.cn.这样就可将所有未设置的以trustauth.cn结尾的记录全部重定向到trustauth.cn上。
6:用ASP、PHP、ColdFusion实现301重定向:
ASP下的301重定向
<%@ Language=VBScript %>
<%
Status=”301 Moved Permanently”
AddHeader “Location”,”http://”
%>
ASP .NET下的301重定向
<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Status = “301 Moved ... 更多
分类: HDMI资讯
12
7 月2021
微信小程序上线至今已经一年多,一直备受用户的关注。尤其最近微信小程序推出的跳一跳小游戏,在全国掀起了使用小程序的热潮。令更多的开发者投入到小程序的开发中。但在展开小程序的工作前,开发者须了解官方的要求。其中按照微信小程序的官方文档,发出request请求链接地址必须为https。即所有服务器通讯必须使用 HTTPS 协议的安全连接。如果开发者仍旧使用http访问请求的话,只能使用开发环境的预览请求数据。一旦发布,所有请求数据均为失效状态。
因此,开发者在接入微信小程序时,必须通过HTTPS完成与服务器的通信。开发者可在微信的后台发现,所有的网络请求全部默认为HTTPS,如图:微信配置服务器信息
由后台的服务器配置可知
(1)微信小程序后台只支持https。
(2)API请求,文件上传,socket 文件上传和下载,必须是在后台配置,否则微信不允许下载。
(3)后端的请求,是可以配置多个请求的,比如request 请求,可以配置不同的请求,但所有的域名必须备案。
可见HTTPS加密协议已经成为微信小程序必备的基本设置。为了让更多的开发者服务器顺利升级HTTPS协议,安信特推出微信小程序HTTPS解决方案(https://www.trustauth.cn/marketing/wechatssl.html)。
开发者只需要三步,即可获取HTTPS证书,并完成证书部署。
1)选定证书类型
HTTPS证书即SSL证书,是HTTP明文协议升级HTTPS加密协议必备的数字证书。为客户端(浏览器)与服务端(网站服务器)之间搭建一条安全的加密通道,对两者之间交换的信息进行加密。
SSL证书分为:EV SSL证书、OV SSL证书以及DV SSL证书三种类型,以及部分证书支持通配符和多域名的功能。开发者可根据自身情况选择不同类型的证书。
DV SSL证书(域名验证型):只验证域名所有适合个人网站、博客等站点使用;
OV SSL证书(企业验证型):验证网站所属单位身份,适合于中旬性企业级用户使用;
EV SSL证书(扩展验证型):扩展验证网站所属单位身份,适合高度信任的企业级用户使用。如金融行业的银行,电子商务平台。
具体请点击:快速正确选择最佳的SSL证书
2)申请证书
(1)选定证书后,联系GDCA的在线客服人员下单。
(2)接着生成CSR,用户可通过CSR工具自主生成,或通过GDCA提供的在线生成工具(在线生成CSR:https://www.trustauth.cn/SSLTool/)。
(3)然后将CSR内容提交给GDCA的客服人员,而私钥部分须自主保存。
(4)再根据申请证书类型,提交相关资料,审核无误后,就可获取HTTPS证书(SSL证书)。
3)证书部署
第一种方法:自主安装。获取证书后,须部署在服务器上。SSL证书根据服务器的不同系统其安装方式而有所差异,具体的操作步骤可参加GDCA网站的SSL证书部署指南(https://www.trustauth.cn/ssl-guide)。
第二种方法:为了确保SSL证书安装无误,安信提供SSL证书免费售后安装服务,用户可根据需求联系客服人员在线申请。
近年来,因为网络安全的原因,HTTPS被大量的采用,而传统的HTTP逐渐被淘汰。广大用户应及早将服务器的传输协议切换到HTTPS。目前安信推出多种类型的SSL证书,解决不同用户升级到HTTPS 的需求,关于更多的HTTPS或SSL证书的知识可咨询安信在线客服。
2021 年 07 月 12 日seo, seo
12
7 月2021
近日,国内众多的游戏玩家十分抓狂,因为最近Steam国内地区出现了大规模的社区访问错误情况,并提示ERR_CONNECTION_TIMED_OUT错误。导致玩家的Steam个人资料,游戏成就以及手机令牌全部打不开。尽管商店页面能直接访问,但仍然给国内的玩家带来了极大的不便。
据消息透露,2017年12月16日起有玩家称 steamcommunity.com 受到 DNS 污染与 TCP 阻断。
DNS 污染
DNS服务器上的DNS记录被恶意设定为不正确的内容,把域名指往不正确的IP地址。
DNS劫持是长期的,不经手动更改不会修复。
TCP 阻断
通常TCP的建立要经过3次握手。而阻断tcp连接的建立只要在监听到第一次握手的时候,控制系统伪造服务器发起第二次握手回应,就能阻断客户端与服务器连接的建立。
为了帮助国内玩家解决steam社区打不开,ERR_CONNECTION_TIMED_OUT错误。国内信息安全专家安信给出以下多种解决方法:
第一种方法:“科学上网” 换成国外IP
因为目前的steam社区打不开,ERR_CONNECTION_TIMED_OUT错误代码,这种情况只针对国内的IP。因此玩家可以通过“科学的方式”,使本机换成国外的IP地址。
第二种方法:强制浏览器使用https访问
已知修改hosts后,https可以打开,http依然会被阻断,所以在浏览器强制https就可以了:
1、添加hosts:
23.52.74.146 steamcommunity.com
2、强制steam社区https打开
chrome浏览器打开:chrome://net-internals/#hsts
添加 steamcommunity.com
firefox浏览器安装https-everywhere:
https://www.trustauth.cn/files/https-everywhere-latest.xpi
打开 steamcommunity.com 点击为此站点添加规则
IOS:
surge添加hosts后,在url rewrite里添加规则
[URL Rewrite]
^http://steamcommunity.com https://steamcommunity.com 302
Linux
Linux修改目录:/ect/host
添加转向ip:23.52.74.146 steamcommunity.com
如图
更改后 不用重启 直接ping steamcommunity.com
链接顺畅了 然后又可以愉快的云挂卡了
第三种方法:修改自己的hosts
1.修改自己的hosts
23.52.74.146 steamcommunity.com
2.客户端设置
随便打开个游戏。
shift+tab调用gameoverlay。
在gameoverlay中打开网页浏览器,地址输入:chrome://net-internals/#hsts
添加 steamcommunity.com
退出游戏试试看吧。
PS:若浏览器出现“不安全的https”红色提示,请不要再访问https,https也有可能遭到中间人攻击
第四种方法:使用第三方软件steamcommunity 302
在SteamCN论坛,玩家@羽翼城 给出了新的解决方案,专门开发出针对Steam社区的访问出错的steamcommunity 302(目前为V2版)。
这个软件打开后,只需要点击启动服务就能够解决问题,它会修改hosts以及监听80+443端口,而经过测试软件确实能够瞬间解决问题。如果出现端口被占用的话关闭对应监听端口的进程即可。需要注意的是,使用这款软件可能依然无法打开Steam直播和Steam视频,因为它们根本没SSL。
下载地址:https://trustauth.cn/t339527-1-1
关于ERR_CONNECTION_TIMED_OUT更多的解决方案,可点击:错误代码“err_connection_timed_out”的解决方案
可见,HTTPS逐渐成为网站正常访问的基本保障。而SSL证书是HTTP协议升级到HTTPS加密的通用解决方案。而获取SSL证书必须通过数字证书颁发机构,如安信。安信致力于网络信息安全,已通过WebTrust 的国际认证,是全球可信任的证书签发机构。GDCA专业技术团队将根据用户具体情况为其提供最优的产品选择建议,并针对不同的应用或服务器要求提供专业对应的HTTPS解决方案。
2021 年 07 月 12 日seo, seo
05
7 月2021
随着HTTP明文协议的弊端不断浮现,以及互联网推出的多项的政策,HTTPS正逐步取代HTTP,成为主流的传输协议。同时SSL证书也成为了网站设置HTTPS的最常见的解决方法,但在部署SSL证书的过程中,很多网络用户都会遇到不同的问题,无法完全正确的部署SSL证书,下面是为使用WordPress的用户整理的相关教程:
方法一:传统方式将 WordPress 开启整站 HTTPS 协议
1.修改wordpress后台配置中的地址改为https版本
技术分享
通过上面的设置,绝大部分导航中的链接就由wordpress系统自动改为HTTPS版本。
2、对于正文中的内部链接需要手工修改,修改的方法有两种:
1)直接在数据库中更新,更新的sql如下:
update wp_posts set post_content = replace(post_content, ‘//www.trustauth.cn/’,‘https://www.trustauth.cn/’)
对于数据库不熟悉的站长不推荐这种方法,对数据库错误的更新对网站可能是毁灭性的打击,建议更新前最好备份数据库。
2)利用wordpress提供的api来重写链接。在使用的主题(themes)的目录下的 function.php加入如下代码:
//转换http为https
function change_ssl(){
if( is_ssl() ){
function change_ssl_main ($content){
$siteurl = get_option(‘siteurl’);
$upload_dir = wp_upload_dir();
$content = str_replace( ‘http:’.strstr($siteurl, ‘//’), strstr($siteurl, ‘//’), $content);
$content = str_replace( ‘http:’.strstr($upload_dir[‘baseurl’], ‘//’), strstr($upload_dir[‘baseurl’], ‘//’), $content);
return $content;
}
ob_start(“change_ssl_main”);
}
}
add_filter(‘get_header’, ‘change_ssl’);
这个方法优点是可逆,不会对网站的数据库有什么影响,可以使网站在HTTP和HTTPS之间自由转换,推荐使用这种方法。
调整完内部链接后,检查整个网站的页面,包括首页,栏目页,内容页,sitemap,页面head部分内容,比如:css,js,canonical等,是否都转换成了HTTPS版本。
方法二、代码方式让 WordPress 开启整站 HTTPS 协议
我们都知道,我们如果使用了 WordPress 的多媒体上传和插入图片附件的时候,附件都被 WordPress 标记为了绝对链接,一般需要修改数据库,但这种方法子凡是非常不推荐的,对于不是非常熟悉数据库的同学们估计网站直接被毁也是可能的,所以子凡在这里推荐一种自己正在使用和即将在 Fanly 主题 2.0 支持的一种方法。
以下代码已于 2017/2/5 ... 更多
2021 年 07 月 05 日seo, seo
05
7 月2021
配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定服务器端证书和密钥文件的位置:
server {
listen 443;
server_name www.trustauth.cn;
ssl on;
ssl_certificate www.trustauth.cn.crt;
ssl_certificate_key www.trustauth.cn.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
…
}
服务器证书是公开的,会被传送到每一个连接到服务器的客户端。而私钥不是公开的,需要存放在访问受限的文件中,当然,nginx主进程必须有读取密钥的权限。私钥和证书可以存放在同一个文件中:
ssl_certificate www.trustauth.cn.cert;
ssl_certificate_key www.trustauth.cn.cert;
这种情况下,证书文件同样得设置访问限制。当然,虽然证书和密钥存放在同一个文件,只有证书会发送给客户端,密钥不会发送。
ssl_protocols和ssl_ciphers指令可以用来强制用户连接只能引入SSL/TLS那些强壮的协议版本和强大的加密算法。从1.0.5版本开始,nginx默认使用“ssl_protocols SSLv3 TLSv1”和“ssl_ciphers HIGH:!aNULL:!MD5”,所以只有在之前的版本,明确地配置它们才是有意义的。从1.1.13和1.0.12版本开始,nginx默认使用“ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2”。
CBC模式的加密算法容易受到一些攻击,尤其是BEAST攻击(参见CVE-2011-3389)。可以通过下面配置调整为优先使用RC4-SHA加密算法:
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
HTTPS服务器优化
SSL操作需要消耗CPU资源,所以在多处理器的系统,需要启动多个工作进程,而且数量需要不少于可用CPU的个数。最消耗CPU资源的SSL操作是SSL握手,有两种方法可以将每个客户端的握手操作数量降到最低:第一种是保持客户端长连接,在一个SSL连接发送多个请求,第二种是在并发的连接或者后续的连接中重用SSL会话参数,这样可以避免SSL握手的操作。会话缓存用于保存SSL会话,这些缓存在工作进程间共享,可以使用ssl_session_cache指令进行配置。1M缓存可以存放大约4000个会话。默认的缓存超时是5分钟,可以使用ssl_session_timeout加大它。下面是一个针对4核系统的配置优化的例子,使用10M的共享会话缓存:
worker_processes 4;
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server {
listen 443;
server_name www.trustauth.cn;
keepalive_timeout 70;
ssl on;
ssl_certificate www.trustauth.cn.crt;
ssl_certificate_key www.trustauth.cn.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
…
SSL证书链
有些浏览器不接受那些众所周知的证书认证机构签署的证书,而另外一些浏览器却接受它们。这是由于证书签发使用了一些中间认证机构,这些中间机构被众所周知的证书认证机构授权代为签发证书,但是它们自己却不被广泛认知,所以有些客户端不予识别。针对这种情况,证书认证机构提供一个证书链的包裹,用来声明众所周知的认证机构和自己的关系,需要将这个证书链包裹与服务器证书合并成一个文件。在这个文件里,服务器证书需要出现在认证方证书链的前面:
$ cat www.trustauth.cn.crt bundle.crt > www.trustauth.cn.chained.crt
这个文件需要使用ssl_certificate指令来引用:
server {
listen 443;
server_name www.trustauth.cn;
ssl on;
ssl_certificate www.trustauth.cn.chained.crt;
ssl_certificate_key www.trustauth.cn.key;
…
}
如果服务器证书和认证方证书链合并时顺序弄错了,nginx就不能正常启动,而且会显示下面的错误信息:
SSL_CTX_use_PrivateKey_file(” ... 更多
2021 年 07 月 05 日seo, seo
28
6 月2021
TLS 1.3 是IETF(国际互联网工程任务组)在2014年开始着手制定的另一个新协议,其安全等级是基于TLS1.1和TLS1.2的基础上在进一步加强。经过三年多的筹备,TLS 1.3呈现出一种未上市先爆红的状态,令大家都对TLS 1.3翘首以待。近日IETF(国际互联网工程任务组)正在进行第27届草案。这意味着,TLS 1.3的发布时间越来越接近。
TLS 自标准化至今已有近20年的时间,1999年TLS 1.0标准颁布;2006年TLS 1.1发布;两年后(即2008年),目前得到广泛使用的TLS 1.2也上市;TLS 1.3将会是TLS协议的第四代。虽然TLS 1.2仍未被破解,但是互联网的世界千变万化,所以须做好未雨绸缪的准备。因此也成就了TLS是保障网络传输安全最重要的安全标准之一。
与前面三代的TLS相比,TLS 1.3是TLS标准更新过程中变动最大的一次,除了对于运行过程中的若干问题如密码套件的选择、密钥的计算方式、握手消息的发送方式等做了更改之外,TLS 1.3还增加了新的握手模式,以满足不同应用场景下的需求。
TLS 1.2与TLS 1.3 的对比
TLS 1.2
TLS 1.2握手过程,与TLS 1.0和1.1类似,涉及一系列的客户端和服务器之间背后的来往通信。
第1步:客户端向服务端发送 Client Hello 消息,该消息由加密信息组成,支持的协议和客户端支持的加密套件(Support Ciphers)和 SSL Version 等信息。也包含一个随机字符。
步骤2:响应客户端的“客户端问候”消息,服务器以“服务器问候”消息响应。该消息包括服务器从客户端提供的CipherSuite中选择的CipherSuite。服务器还会将其证书和会话ID以及另一个随机值一起发送。
第3步:客户端验证服务器发送的证书。验证完成后,发送一个随机字符串,也称为“密钥”,并使用服务器证书的公钥对其进行加密。
步骤4:服务器收到密钥,客户端和服务器都会生成一个主密钥以及会话密钥(临时密钥)。这些会话密钥将用于对称加密数据。
第5步:客户端向服务器发送“更改密码规范”消息,通过会话密钥的帮助让其知道它将切换到对称加密。除此之外,它还发送“客户端已完成”的消息。
步骤6:回复客户端的“更改密码规范”消息时,服务器执行相同操作并将其安全状态切换为对称加密。服务器通过发送“服务器已完成”消息来结束握手。
有上述可知,客户端和服务器之间需要三次往返才能完成握手。平均而言,这需要0.25秒到0.5秒之间的时间。这个数字用户一般都察觉不到,但此刻数据传输还没有开始。当比较HTTP和HTTPS站点的TTFB(第一个字节的时间)时,与HTTP站点相比,HTTPS站点的TTFB需要更长的时间,尤其是当站点运行在HTTP / 1上时。
TLS 1.3握手
与TLS 1.2握手过程对比,TLS 1.3握手过程只需一次往返,大大加快了其相应时间。
第1步:与TLS 1.2握手类似,TLS 1.3握手从“客户问候”消息开始。客户端发送支持的密码套件列表并猜测服务器可能选择的密钥协议协议。客户端还发送其特定密钥协议。
第2步:在回复“客户端问候”消息时,服务器回复它所选择的密钥协议。“服务器问候”消息还包含服务器的密钥共享,其证书以及“服务器已完成”消息。
第3步:现在,客户端检查服务器证书,生成密钥,因为它具有服务器的密钥共享,并发送“客户端已完成”消息。从这开始,数据的加密就开始了。
TLS 1.3做出了哪些重大改动
与之前版本类似,TLS 1.3协议可分为握手协议和记录协议,前者负责密码组件的协商以及安全信道的建立,后者则是在已建立的安全信道中传输秘密信息。TLS 1.3设计的第一个重要目标就是避免之前版本存在的缺陷,为此,一部分相关的改动如下:
(1)禁止使用RSA密钥传输算法。
(2)禁止一些安全性较弱的密码原语如MD5的使用。
(3)不再支持重协商握手模式。
(4)握手消息采取了加密操作,如图二中标有{}的部分。
(5)实现了握手协议和记录协议的密钥分离。
(6)实现了会话密钥与整个握手消息的绑定。
(7)记录层只能使用AEAD(Authenticated Encryption with Additional Data)认证加密模式。
目前,TLS 1.3仍处于讨论修改阶段,因此TLS 1.2仍然是目前甚至未来相当一段时间内被普遍使用或者兼容的TLS 版本。这可能导致TLS 1.2对TLS 1.3的安全性带来影响,也是未来研究的重要方向。作为国内的CA机构安信也是十分期待TLS 1.3 协议的发布,这对于我们自主的SSL证书来说也是技术的升级更新。
Windows驱动程序开发
2021 年 06 月 28 日seo, seo
28
6 月2021
近两年,为了加快HTTPS替换HTTP的速度,全球各大浏览器厂商不断推出各种政策。其中Google在其在线安全博客上宣布,他们的搜索算法将会对HTTPS网站搜索结果中优先排名。
HTTP(超文本传输协议)是Internet上通信的基础。但由于通信未加密,目前已被视为不安全的协议。HTTPS是HTTP的安全版本,使用SSL或更新的TLS加密协议来加密数据流。
SSL和TLS可能会造成严重的性能问题
从安全角度出发,网站切换到HTTPS颇有吸引力,即可提升SEO排名,也可保护网站。但在现实情况是:许多应用程序仍然依赖于其软件堆栈中效率低下的架构,若添加SSL或TLS可以使应用程序更慢,更耗资源。
因为HTTPS中的SSL / TLS协议存在一个握手协议,握手是Web浏览器和服务器之间的一系列通信,用于验证连接是否可信。这是一个CPU密集型的过程,会导致用户和服务器之间更多的往返行程。
Windows驱动程序开发
NGINX解决方案
这些问题遇上今天发达的科技都会迎刃而解,NGINX和NGINX Plus等现代网络服务器解决了这些挑战,并能够很好地扩展应用程序。NGINX和NGINX Plus提供了许多减轻SSL / TLS性能影响的方法,包括会话缓存,会话票据数据或ID,OCSP和实验性SPDY协议。
会话缓存
当ssl_session_cache在配置中包含指令时,NGINX和NGINX Plus会缓存用于创建SSL / TLS连接的会话参数。包含shared参数时,此缓存将在所有工作人员之间共享,因为连接设置信息已为人所知,因此可大大缩短后续请求的响应时间。为缓存分配名称并设置其大小(1 MB共享缓存可容纳大约4,000个会话)。
该ssl_session_timeout指令控制会话信息保留在缓存中的时间。默认值是5分钟; 将它增加到几个小时可以提高性能,但需要更大的缓存。
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 4h;
会话数据和ID
会话数据存储有关特定SSL / TLS会话的信息。当客户端恢复与应用程序交互时,会话数据用于恢复会话而无需重新协商。会话ID是另一种选择; MD5散列用于映射到由ssl_session_cache指令创建的缓存中存储的特定会话。这两种机制都可以用来快速进行SSL / TLS握手。
ssl_session_tickets on;
OCSP装订
另一种提高HTTPS性能的方法是使用OCSP装订,这可以缩短SSL / TLS握手的时间。传统上,当用户通过HTTPS连接到应用程序或网站时,浏览器根据证书吊销列表(CRL)验证SSL / TLS证书,或使用来自证书颁发机构(CA)的联机证书状态协议(OCSP)记录。这些请求会增加延迟,并且颁发证书的CA可能不可靠。借助NGINX和NGINX Plus,可以将OCSP响应缓存到服务器,并消除代价高昂的开销。
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/cert/trustchain.crt;
resolver 8.8.8.8 8.8.4.4 valid=300s;
密码套件
指定优化的密码套件,加密网络通信的算法,有时被称为提高性能。可以使用这个ssl_prefer_server_ciphers指令来达到这个目的,但事实是,在大多数情况下,默认设置是足够好的。这种设置和最佳实践对旧版,目前的或未来的密码同样适用。因此建议选择特定的密码来满足特定的安全和性能要求。
SPDY
SPDY是一种尝试减少HTTP流量延迟和往返时间的实验性协议。该协议在Web浏览器和应用程序服务器之间创建一个隧道。通过HTTP复用,SPDY可通过单个TCP连接启用并发流量流,从而减少对其他连接和SSL协商的需求。该协议还压缩请求和响应HTTP标头,导致传输的字节更少。需要注意的是,如果在分割域,SPDY不会带来任何好处。
listen 443 ssl spdy;
spdy_headers_comp 1;
对于HTTP / 2支持,该 http2 参数将参数替换为上面代码段中显示spdy 的 listen 指令。没有与 HTTP / 2 的指令等价的内容spdy_headers_comp 。
# In NGINX Plus ... 更多
2021 年 06 月 28 日seo, seo
15
6 月2021
HTTP安全标头是网站安全的基本组成部分。在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件。HTTP安全标头实施后,可防止XSS,代码注入,clickjacking等。
当用户通过客户端浏览器访问站点时,服务器使用HTTP响应头进行响应。
站长可使用这些标头进行通信并提高Web安全性。下面介绍的五个安全头,它们将为您的网站提供一些急需的保护。
1、HTTP严格传输安全(HSTS)
如一个名为trustauth.cn的网站,并且已安装SSL / TLS证书,从HTTP迁移到HTTPS。但很多HTTPS网站,也可以通过HTTP来访问。开发人员的失误或者用户主动输入地址,都有可能导致用户以HTTP访问网站,降低了安全性。
此时,可通过HSTS解决问题,让浏览器默认HTTPS跳转,省去一次HTTP请求。另外,浏览器本地替换可以保证只会发送HTTPS请求,避免被劫持。
要使用HSTS,只需要在HTTPS网站响应头中,加入代码
Strict-Transport-Security:max-age = <expire-time>
或
Strict-Transport-Security:max-age = <expire-time>; includeSubDomains
或
Strict-Transport-Security:max-age = <expire-time>; preload
2、内容安全策略(CSP)
HTTP内容安全策略响应标头通过赋予网站管理员权限,管理网站允许加载的内容。换句话说,用户可以将网站的内容来源列入白名单。
内容安全策略可防止跨站点脚本和其他代码注入攻击。虽然不能完全消除攻击的可能性,但它确实可以将损害降至最低。目前大多数主流浏览器都支持CSP,因此兼容性不成问题。
代码:
Content-Security-Policy: <policy-directive>; <policy-directive>
3、跨站点脚本保护(X-XSS)
X-XSS头部可以防止跨站脚本攻击。Chrome,IE和Safari默认启用XSS过滤器。此筛选器在检测到跨站点脚本攻击时不会让页面加载。
代码:
X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>
4、X-Frame-Options
在Orkut时代,一种名为“点击劫持”的欺骗技术非常流行。在这种技术中,攻击者愚弄用户点击不在那里的东西。X-Frame-Options,是为了减少点击劫持(Clickjacking)而引入的一个响应头。这是通过禁用网站上存在的iframe来完成的。换句话说,它不会让别人嵌入网站的内容。
句法:
X-Frame-Options:DENY
X-Frame-Options:SAMEORIGIN
X-Frame-Options:ALLOW-FROM https://trustauth.cn/
5、X-Content-Type-Options
互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:”text/html”代表html文档,”image/png”是PNG图片,”text/css”是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。
X-Content-Type标头提供了针对MIME嗅探的对策。它指示浏览器遵循标题中指示的MIME类型。作为发现资产文件格式的功能,MIME嗅探也可用于执行跨站点脚本攻击。
代码:
X-Content-Type-Options:nosniff
2021 年 06 月 15 日seo, seo
15
6 月2021
Go语言
Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
HTTPS
HTTPS是在HTTP下加入SSL(Secure Sockets Layer 安全套接层)层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
SSL,及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
客户端CA对其服务端证书进行校验过程如下:
一:对其证书不进行校验
1,简易的https web 服务器
server.go:
package main
import (
“fmt”
“net/http”
)
/*
只要实现了 ServerHTTP方法 便可构建web服务器
*/
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Println(“Hi, This is an example of https service in golang!”)
}
func main() {
http.HandleFunc(“/”, handler) //设置路由及相对应的处理函数 且实现了ServerHTTP方法
http.ListenAndServeTLS(“192.168.20.162:8001”, “server.crt”,
“server.key”, nil) //server.crt:服务端证书 包含服务端公钥信息 server.key:服务端私钥
/*
生成私钥:
openssl genrsa -out server.key 2048
生成证书信息:
openssl req -new -x509 -key server.key -out server.crt -days 365
*/
}
client.go:
package main
import ... 更多
2021 年 06 月 15 日seo, seo
10
6 月2021
Python
Python 是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
在python上使用SSL有许多场景,本文主要介绍使用python提供HTTPS服务。(HTTPS是SSL在WEB上的应用之一)
一、使用python访问HTTPS网站
使用python做为客户端去访问公网上的网站,而这个网站为了传输安全(避免被劫持或者窃听)使用了HTTPS服务,传输过程内容都经过了SSL加密。下面来看下具体的python代码,这里使用的是python2.7.11,用的是python自带的urllib2。当然也可以使用requests或者pycurl等第三方库,都可以,原理都是一样的,只是实现的手段有些差异而已。
import urllib2
import ssl
if __name__ == ‘__main__’:
myurl=”https://www.baidu.com”
req = urllib2.Request(myurl)
try:
response = urllib2.urlopen(req)
print “HTTP return code:%d” % response.getcode()
strResult= response.read()
print strResult
except Exception ,ex:
print “Found Error :%s” % str(ex)
运行它,就可以得到这个网站上的内容了。并且传输过程都经过了加密。是不是很简单。整个的传输过程大概是这样的,客户端请求SSL连接握手(其中会跟服务器有些SSL协议之间的交互)服务器把自己的证书传给客户端,客户端对这个证书进行认证(每台客户端电脑上都会默认安装一些权威CA(证书签发机构)的证书,这个认证就是使用这些证书进行的,python的ssl模块会自动加载这些权威CA证书,当然也可以自己指定,确保这个证书是由可信的CA颁布的,之后就是利用证书交换密钥后,使用密钥对传输内容进行加密传输。
CA证书即SSL证书(Secure Socket Layer的缩写)是Netscape设计开发的,用于保护服务器和客户端之间的在线交易。通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。
如果使用谷歌浏览器访问会提示用户:您的连接不是私密连接,如果你强制连接则会提示不安全
import urllib2
import ssl
if __name__ == ‘__main__’:
myurl=”https://127.0.0.1:8443″
req = urllib2.Request(myurl)
try:
response = urllib2.urlopen(req)
print “HTTP return code:%d” % response.getcode()
strResult= response.read()
print ... 更多
2021 年 06 月 10 日seo, seo