随着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 ... 更多
所有文章
配置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
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
近两年,为了加快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
安全套接字层 (SSL)(现在技术上称为传输层安全协议 (TLS))是一个通用构建块,用于在客户端与服务器之间进行加密通信。应用很可能以错误的方式使用 SSL,从而导致恶意实体能够拦截网络上的应用数据。为了帮助您确保您的应用不会出现这种情况,本文重点介绍了使用安全网络协议的常见陷阱,并解决对使用公钥基础结构 (PKI) 关注较多的问题。
1、概念
在典型的 SSL 使用场景中,会使用一个包含公钥及与其匹配的私钥的证书配置服务器。作为 SSL 客户端与服务器握手的一部分,服务器将通过使用公钥加密签署其证书来证明自己具有私钥。
不过,任何人都可以生成他们自己的证书和私钥,因此,一个简单的握手只能说明服务器知道与证书公钥匹配的私钥,除此之外什么都证明不了。解决此问题的一个方法是让客户端拥有其信任的一个或多个证书集。如果证书不在此集合中,则不会信任服务器。
但这个简单的方法有几个缺点。服务器应能够随时间的推移升级到更强的密钥(“密钥旋转”),使用新的公钥替换证书中的公钥。遗憾的是,客户端应用现在必须根据服务器配置发生的变化进行更新。如果服务器不在应用开发者的控制下(例如,如果服务器是一个第三方网络服务),则很容易出现问题。如果应用必须与网络浏览器或电子邮件应用等任意服务器通信,那么,此方法也会带来问题。
为弥补这些缺点,通常使用来自知名颁发者(称为证书颁发机构 (CA))发放的证书配置服务器。主机平台一般包含其信任的知名 CA 的列表。从 Android 4.2 (Jelly Bean) 开始,Android 目前包含在每个版本中更新的 100 多个 CA。CA 具有一个证书和一个私钥,这点与服务器相似。为服务器发放证书时,CA 使用其私钥签署服务器证书。然后,客户端可以验证该服务器是否具有平台已知的 CA 发放的证书。
不过,在解决一些问题的同时,使用 CA 也会引发其他问题。因为 CA 为许多服务器发放证书,因此,您仍需要某种方式来确保您与您需要的服务器通信。为解决这个问题,CA 发放的证书通过 gmail.com 等具体名称或 .trustauth.cn 等通配型主机集识别服务器。
以下示例会让这些概念更具体。下面的代码段来自命令行,openssl工具的 s_client命令将查看 Wikipedia 的服务器证书信息。它指定端口 443,因为此端口是 HTTPS的默认端口。此命令将 openssl s_client的输出发送到 openssl x509,后者将根据 X.509 标准格式化与证书有关的信息。具体而言,此命令会要求相关主题,主题包含服务器名称信息和可识别 CA 的颁发者。
<code>
$ openssl s_client ... 更多
2021 年 06 月 21 日seo, seo
代码签名证书是保护软件代码的完整性,免受第三方的修改以及损坏。随着代码证书的大量使用,越来越多的操作系统通过代码签名证书保护软件代码安全,帮助使用识别软件发行商的身份,获取安全的软件代码。
与HTTPS证书(SSL证书)一样,代码签名证书也是由数字证书颁发机构(CA)对企业或者个人身份核实无误后颁发,然后签署到软件代码被主要的操作系统识别其代码是安全、完整的。
代码签名证书最重要的部分之一是时间戳,即使证书到期后,软件和用户也可以识别有效的代码签名证书。
当软件因为过期的代码签证书而失效时,不仅对用户带来极大的不便,也会对发行商带来严重的影响。因此软件发行者在代码签名过程做好记录,且用软件的时间戳来保留签名。
时间戳不仅是软件持续可用性的最佳实践,它还有良好的安全优势。如当出现密钥泄露而需撤销证书,在撤销日期之前,签署的文件可持续运行。
下面介绍时间戳的背景和遵循的最佳实践,确保开发者不会遇到软件签名意外问题。
什么是时间戳?
时间戳会一直留在软件上的签名,在代码签名证书过期后,保证软件仍旧被操作系统或其他平台兼容,并能正常运行。当签名被检验时,时间戳会允许系统检查签名的有效性,而不是签名时间,或软件运行的当前时间。
如果没有时间戳,签名就会根据当前日期进行检测。如果开发者的软件时几年前分发的,当其代码签名证书过期时,该签名就不在有效。那么用户在运行该软件时,就会受到平台的拦截运行。
每次用户运行时,系统都会检查可执行文件上的签名。这意味着如果软件的代码签名证书过期并且没有时间戳的话,软件将突然停止为所有用户工作。
对于大多数软件开发者说来,都希望其开发的软件能够被用户长期使用。因此代码签名证书的时间戳具有重要的功能,因为它可确保软件能长期运行。
时间戳本身是由CA签名并加以保护,使其不受篡改或欺骗以及密码保护。
在Windows上,如果软件提供代码签名证书的CA不受信任,时间戳还可确保签名保持有效。
最佳实践
1、使用时间戳!在许多工具中,例如Microsoft的SignTool,时间戳是可选的。
2、检查平台支持:SHA-2是用于时间戳签名的现代标准算法。但是,仍有一些操作系统默认不支持SHA-2,开发者可考虑使用SHA-1签名或具有两个证书的双重签名来支持这两种算法。
3、使其成为构建过程的一部分:在更新软件时,开发者将构建并发布新的可执行文件。确保签名和时间戳是该过程的一部分,以避免每个软件版本出现任意意外问题和错误。
4、记录流程:时间戳在签名过程中需要额外的标志和命令,包括从CA检索时间戳签名的URL。确保员工或程序的更改都不会忘记正确签署软件。
5、关键损害的受损限制:无论颁发证书吊销之前或之后,时间戳可为操作系统提供了一种识别签名的方法。如果开发者因密钥泄露而需要吊销证书,则可以执行此操作,并且不会影响已经合法生成的签名(如果开发者已加盖时间戳)。时间戳将与撤销日期进行核对,并且在该日期之前发布的任何内容都将继续有效。
证书到期的重要影响
用户常对代码签名证书有一种误解,认为证书到期,就是证书颁发机构(CA)收取费用的另一个借口。但从技术角度来看,证书到期是PKI的基本组成部分,在系统上运行必须存在的,尤其是在多个独立方进行交互的Web PKI中。
PKI的主要目的之一是将身份(如域名,组织或其他)绑定到公钥上。对于任何类型的可信证书,申请者的身份都需经过验证,CA机构确保其准确性后,就会向该申请者颁发属于他的证书。申请代码签名,SSL和电子邮件证书都需如此。
如申请者在收到代码签名证书之前。CA供应商必须确保该公司真正存在,已经正确注册并且与具备良好的信誉,并且该公司需提供证书的相关的负责人信息。
已到期的代码签名证书,申请者申请续期是,CA机构需对申请者信息重新检查,以确保身份和公钥之间的绑定仍然正确。通过这种方式,将可信证书视为与护照或驾驶执照类似的身份证件。
撤销是一种额外的机制,可以指示何时不再信任证书,但这其中有多种原因(包括性能,客户端软件中缺少撤销状态检查以及可用性),因此不能将撤销作为主要使证书失效的方法。
证书过期还有其他原因,但为了减少证书收到恶意攻击的机率,在使用新密钥对重新验证证书,并升级到当前的加密方法,如新的签名算法或更强大的密钥。
2021 年 06 月 21 日seo, seo
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
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
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
下列是常用的OpenSSL命令列表
作为一个开源工具,OpenSSL可用于Windows,Linux,macOS,Solaris,QNX以及大多数主要操作系统。
以C编程语言编写的核心库,OpenSSL命令可用于执行从CSR生成到转换证书格式等数百种功能。但对于只想安装SSL证书的人来说,只有少数命令是非常必要的。下面是安装SSL证书时常要用到的OpenSSL命令及其应用程序。
用于生成私钥的OpenSSL命令
openssl genrsa -out yourdomain.key 2048
OpenSSL命令检查您的私钥
openssl rsa -in privateKey.key -check
OpenSSL命令来生成CSR
如果已生成私钥:
openssl req -new -key yourdomain.key -out yourdomain.csr
一旦执行这个命令,会被要求更多的细节。输入如下信息:
国家名称:您的组织合法所在的2位国家代码。
州/省:写出贵组织合法所在州的全名。
城市:写出您的组织合法所在城市的全名。
组织名称:编写组织的合法名称。
组织单位:部门名称(不强制,按Enter键跳过)
通用名称:合格域名(例如,www.yourtrustauth.cn。)
电子邮件:已通过认证的电子邮件ID(不强制,按Enter键跳过)
如果还没有生成私钥:
该命令将一次生成CSR和私钥。
openssl req -new \
-newkey rsa:2048 -nodes -keyout yourdomain.key \
-out yourdomain.csr \
-subj “/C=US/ST=Florida/L=Saint Petersburg/O=Your Company, Inc./OU=IT/CN=trustauth.cn”
国家名称:您的组织合法所在的2位国家代码。
州/省:写出贵组织合法所在州的全名。
城市:写出您的组织合法所在城市的全名。
组织名称:编写组织的合法名称。
组织单位:部门的名称
通用名称:您的完全限定域名
OpenSSL命令检查CSR
openssl req -text -noout -verify -in CSR.csr
用于转换证书和密钥文件的OpenSSL命令
OpenSSL命令转换PEM文件:
将PEM转换为DER
openssl x509 -outform ... 更多
2021 年 06 月 10 日seo, seo