windows10安装kali子系统&&https: aptMethod::Configuration: could not load seccomp policy: Invalid argument解决办法 Linux
windwos10安装kali Linux子系统,后更新系统若是出现如下错误:
https: aptMethod::Configuration: could not load seccomp policy: Invalid argument
一般是你的源有问题,可以尝试修改你的源,我就是通过修改源治好了这个毛病!(注:以下命令都是在root权限下执行得,你可以通过sudo su 来切换到root权限下)
nano /etc/apt/sources.list
修改成如下(仅供参考,可以自己测试可用的速度快的,反正国内得总是出错-_-|):
#deb http://http.kali.org/kali kali-rolling main
deb http://ftp.ne.jp/Linux/packages/kali/kali kali-rolling main
然后执行一下命令更新即可:
apt-get update && apt-get dist-upgrade && apt-get install wget -y
然后可以安装apt install apt-transport-https,然后尝试使用官方源(deb https://http.kali.org/kali kali-rolling main)更新。
执行完上面的步骤后,你可以通过执行 wget 命令,如果返回类似下面得信息,则表示你的wget安装好了!
root@mrxn:/# wget
wget: missing URL
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.
我这边可以跑到560KB/s左右,如果觉得慢,可以开VPN/代理加速。
出现意思错误是因为我想wget一个东西的时候,提示我命令未找到,然后就安装wget,失败,到切换源,成功安装wget,成功wget我需需要下载得东西,然后呢。。。就有了这篇日经贴!
大致简记一下如何再windows10上安装kali Linux子系统:
参照官方文档:https://docs.microsoft.com/en-us/windows/wsl/install-win10
win+Q 搜索powershell,然后以管理员的方式 打开,执行如下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
官方文档说,执行命令后,根据提示执行重启。但是我的提示是RESTARTNEEED:FALSE 。
so,我不需要重启!@_@||记不太清,有可能我之前开启了Linux子系统,wangle !。。。
插一句:开启Linux子系统,在 控制面板—程序和功能—启用或关闭Windows功能—把Linux子系统复选框勾上即可
接下来就是去应用商店搜索kali 即可找打,然后安装吧!一百多兆,很快的。接下来就是上面得解决错误。。。
接下来就是安装xfce4,
wget https://raw.githubusercontent.com/Mr-xn/server-bash-script/master/xfce-xrdp.sh
sh xfce-xrdp.sh
差不多三十几分钟左右就好了(渣渣本,配置好点会更快)。
然后用命令 service xrdp start 来启动xrdp,在本地使用远程桌面连接127.0.0.1:3390 即可打开GUI界面了。
用户名和密码就是安装kali时设置的账号密码。
进去后选择 Use default config 加载默认配置即可。
然后进入桌面:很简洁
使用 uname -a 可以看到是老版本得kali 并不是最新版得。
当不需要的时候,可以使用 service xrdp stop 停止XRDP进程即可
总结:windows下得Linux子系统,可以用,但是不是很好用。但是对硬件要求比较高,显卡或者内存不高或导致运行很慢。。。当然了,这个年代,SSD必备!
参考文章链接:
https://github.com/meefik/linuxdeploy/issues/869
好消息:沃通免费SSL证书升级为2年期5个域名-想要使用https的,赶紧行动啦 业界新闻
好消息:沃通免费SSL证书由原来支持1年期1个域名,升级为支持2年期5个域名!用户可以一次性申请2年期SSL证书绑定5个域名,已经能够满足站点的基本使用需求。2年期5个域名的免费SSL证书将于今天正式开放申请,欢迎新老用户登录沃通免费SSL证书申请页面立即体验!
沃通CA自2015年初推出免费SSL证书后,获得广大用户的一致好评,让广大中小网站和个人网站都能零成本启用HTTPS加密,保护网站机密信息安全。目前,沃通免费SSL证书的用户已经遍布180多个国家和地区,为全球普及HTTPS加密起到了极大的推动作用。此外,沃通推出的SSL精灵大大降低了SSL证书安装部署的复杂性,让用户能够一键搞定HTTPS加密。
DV免费ssl证书申请指南
一、注册、登录
1、打开浏览器,访问http://freessl.wosign.com,选择需要的证书类型
1.1免费多域申请地址:http://freessl.wosign.com/freessl
2、进入buy系统后,首先登录buy系统(点击左上角的登录)
3、如果您已经有账号密码或客户端证书,请选择登录方式并登录;如果没有,请先注册
其中,密码为登录申请平台的密码,可以是您的邮箱密码,也可以重新设置,并记住!
4、进入您的邮箱,激活邮件,等待取回您的证书,双击pfx证书安装,然后登录申请平台。(邮件收到的pfx证书为登录buy系统的客户端证书,请不要弄混)
二、申请证书
1、登录buy系统,进入用户中心,选择证书,添加您需要的证书,如下图(或登录后访问
DV SSL申请地址 https://buy.wosign.com/DVSSL.html
免费SSL申请地址 https://buy.wosign.com/free/FreeSSL.html)
在购物车中确定好年限及域名数量后(以DV多域为例),确定下单,并补充材料
2、接着您需要填写证书绑定的域名,证书签名算法,证书安装密码,中英文证书等信息。
3、接下来就是申请免费SSL证书重要的域名验证,wosign提供了两种方式,您可以选择whois邮箱验证,或者网站验证方式,如下图所示,也可以先跳过验证,进入下一步,等确认订单时再验证域名。
PS:wosign有严格的域名验证,您必须通过上面其中一种方式验证域名的所有权,验证通过后,wosign才会颁发您的证书。
4、选择证书申请文件生成方式,推荐您选择方式一,简单省事,如下图所示,然后确认订单信息。
PS:如果是自己生成的CSR,请选择方式二并将CSR提交到下方。
5、订单确认后,稍等一会,证书就会通过申请邮箱发送给您啦,通过邮箱就可以领取!
、取回您的证书并一定要保管好证书和密码!
7、证书安装部署指南,请访问:http://freessl.wosign.com/guide。
更多详细教程请前往官网查看:http://freessl.wosign.com/
相关文章:
一段代码让nginx实现网站资源防盗链
nginx配置location总结及rewrite规则写法
nginx配置ssl加密(单双向认证、部分https)
NginxRewrite规则判断普通用户与搜索引擎爬虫(UA)实现https跳转
SSL/TLS原理详解
OpenSSL 与 SSL 数字证书概念贴
基于OpenSSL自建CA和颁发SSL证书
免费在线生成二维码API接口可以使用了,支持http和https PHP
本站在线二维码API接口 支持https和http 、支持 get 和 post 请求方式、
欢迎大家使用:普通http网站调用样例:http://api.mrxn.net/mrxnqrapi/api.php?data= + 文字/网址等内容 其实http的两个都可以使用的
需要使用https网站可以参看下面的调用方法:
https://mrxn.net/mrxnqrapi/api.php?size=4x4&data=mrxn.net 生成的二维码如下:
Mrxn二维码API参数说明
data:要转码的数据
level:默认L 纠错级别:L、M、Q、H
size:默认4 点的大小:1到10,用于手机端4就可以了
margin:默认1 边距 1到10
logo:默认为空 需要使用logo的请单独找我详谈!
作者:Mrxn Blog: https://mrxn.net Email:[email protected]
当然也有在线制作你喜欢样式的二维码:免费体验一下
制作初衷因为本站是https的,非https加密也是可以使用的,但是浏览器的绿色小锁就会显示感叹号,我这人有强迫症!而且但免费的网站很多的都不支持https,或者是很慢,果断觉得自己搞,问了@独狼一些,还有@php爱好者,最终自己搞定了。
下面给大家列出几个大家常用的国内外的免费在线生成二维码 API 的链接:
支持http的:
http://b.bshare.cn/barCode?site=weixin&url=https://mrxn.net
http://s.jiathis.com/qrcode.php?url=https://mrxn.net
http://qr.liantu.com/api.php?text=mrxn.net
http://api.k780.com:88/?app=qr.get&data=mrxn.net&level=L&size=6
最新发现的百度云盘的:http://pan.baidu.com/share/qrcode?w=150&h=150&url=mrxn.net
支持https的:
国外的:https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=mrxn.net
我自己的:https://mrxn.net/mrxnqrapi/api.php?data=mrxn.net
明月浩空的:https://limh.me/api/qrapibig.php?url=mrxn.net.jpg 他这个必须加括号里面的后缀才行(.jpg)
最新发现的百度云盘的:https://pan.baidu.com/share/qrcode?w=150&h=150&url=mrxn.net (不过加载了非加密的资源,强迫症就别用了!)
更多的二维码分享可以参看我这篇文章:https://mrxn.net/free/261.html
分享4个自动生成网址二维码图片的方法
Apache下设置自动将http跳转到https方法 技术文章
今天有朋友问我怎么配置虚拟机,使其支持访问者打开首页时自动跳转到https,而非http,因为是虚拟机,重复-虚拟机,所以呢,配置服务器的那些方法不好使,搜索得到如下方法,利用修改 伪静态规则 文件- .htaccess ,使虚拟机也可以支持直接打开网站跳转到https,具体方法如下,在htaccess文件末尾添加如下代码即可实现:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
一行一条命令,其实就是利用伪静态将访问者跳转到443端口,从而实现了http到https的跳转。
注:此为虚拟机的方法,推荐使用服务器自己配置https,虚拟机的这样配置后,有可能导致蜘蛛不能抓取你的网站,对SEO不好,慎重选择!
操作前记得备份相关文件,以及数据!
服务器配置https方面可以参考如下文章:
emlog 使用ssl证书开启HTTPS安全访问三步曲
nginx配置ssl加密(单双向认证、部分https)
NginxRewrite规则判断普通用户与搜索引擎爬虫(UA)实现https跳转
SSL证书与Https应用部署小结
emlog侧边栏日历显示正在加载中解决方法(包括https和http) emlog
这几天在论坛看到王老师 @王语双 发帖说,他的emlog内页日历显示不出来,一直显示 --加载中(包括https和http),却一直显示不出来,如图:
王老师的是http网站,我的是https的,也是加载不出来,在论坛看到的答复中知道大概是这三点的原因造成的:
- js冲突;
- 网络问题;
- 301跳转问题;
王老师的情况最后发现是属于网络问题,即有时候网络高峰期的时候,移动网络有可能出现这种情况;
js冲突一般在浏览器的开发者工具条里面可以看出来,这里不做讨论;
网络问题嘛,没法解决,自己换服务商吧!
301跳转问题:
没做好301跳转的,比如没有做mrxn.net 301跳转到 www.mrxn.ne t的时候,访问mrxn.net 就有可能出现这种情况,一般在开发者工具条里面有提示:
XMLHttpRequest cannot load http://www.wys.me/?action=cal&randnum=0.19238296267576516. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://wys.me' is therefore not allowed access.
我的站点属于https加密的类型,所以提示的就是如下信息:
Mixed Content: The page at 'https://mrxn.net/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'https://mrxn.net/?action=cal&randnum=0.8051533969119191'. This request has been blocked; the content must be served over HTTPS.大概意思就说,这个页面使用的是https加载https://mrxn.net,但是请求里面混杂非加密的请求
https://mrxn.net?action=cal&randnum=0.8051533969119191,因此这个请求被服务器阻断了,因为服务器要求请求必须是https加密的。
我在论坛里面回帖说了一下我的https也不加载,得到了基友hackhp @hackhp 的如下答复:
修改/include/lib/function.base.php里面的
return 'http://' . $_SERVER['HTTP_HOST'] . $matches[0];
修改为:
return '//' . $_SERVER['HTTP_HOST'] . $matches[0];我做了测试,的确修改后就可以加载了
函数的注释显示是
/**
* 获取站点地址(仅限根目录脚本使用,目前仅用于首页ajax请求)
*/
也就是说这个函数是用于ajax请求获取网站地址的,那么,修改成如下形式也是可以的:
return 'https://' . $_SERVER['HTTP_HOST'] . $matches[0];结果证明是可行的。
emlog侧边栏日历显示正在加载中解决方法(包括https和http)这个小问题在此小计就结束了,在此记录分享可能需要的朋友,希望可以帮到你们。
巧用七牛CDN的镜像功能使百度分享支持HTTPS 技术文章
最近搞了个 HTTPS 证书,像以前一样给博客添加了个百度分享(http://share.baidu.com/)的组件,但发现百度分享不支持 HTTPS(百度分享图标出不来,console 会提示页面有不安全的脚本元素)。看了其它几家也都不支持,搜索了下发现有人建议把百度分享所需的 js 都保存到自己本地就行了。这也是个办法,分享功能大多是抓取这个页面的 title、摘要、图片等然后起调一个页面完成分享,这些都是本地 js 文件能完成的。
看了下从百度分享获取的代码,里面主要加载了这个:http://bdimg.share.baidu.com/static/api/js/share.js,访问了一下果然还是不支持 HTTPS。然后我就天真的把 share.js 上传到了七牛 CDN(七牛是支持 HTTPS的,在空间设置-域名配置里面设置下就行),然而百度分享的图标还是没出来。看了下控制台,卧槽,又加载了一堆 js,作为一个全栈工程师,我非常灵性的瞅了眼代码里面有一段:domain:{staticUrl:”http://bdimg.share.baidu.com/”},原来是模块化加载,把链接替换成七牛 CDN 的链接后有些请求 404 了,我又天真的以为把这几个 js 文件补全就行,但是补完几个,又有几个文件 404 了,我可没耐心一个个文件补齐呀。
作为一个灵性码农,我马上想到七牛不是有个镜像存储功能嘛,设置一发:
故事就这么结束了吗?怎么可能。百度“幺蛾子”还是比较多。百度分享不光是分享功能,还有分享的数据分析。数据哪里来呢?前端埋点统计的呀,原理简单说就是监控分享时的点击事件,发送数据到后台。这其中的核心就是 http://nsclick.baidu.com/v.gif,需要统计的参数和值都以 GET 参数的形式附在链接后面。然后后端再清洗请求日志或者获取请求的时候就直接把数据入库了。但这个统计小图片也不支持 HTTPS。没办法,只能去掉了,方法也很简单,static/api/js/trans/logger.js 文件为空就行(上传个空文件、占个位)。到此才算大功告成。
上面是授之以渔,不想自己弄的,可以直接抓鱼,当然希望你也能明白其中的风险,文件是我这边的(可能有后门,当然我没有),而且哪天我流量没了可能会把文件删了。
<div class="bdsharebuttonbox"><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="bds_sqq" data-cmd="sqq" title="分享到QQ好友"></a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a></div> <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='https://dn-iyz-file.qbox.me/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
一点后话:一直感觉百度分享没人维护了,在群里打听了下。应该是有人(部门)维护着(至于不支持 HTTPS 那是百度 CDN 的锅),但是现在不流行打社交牌了,公司也不重视这块了,还是 200 亿糯米 O2O 更实在,而且百度首页貌似也不显示搜索结果页面的分享次数了。
当然 ,emlog可以使用简爱的这个分享插件:http://www.emlog.net/plugin/174,也支持https,但是得需要jquery的支持,如果模板没有加载,需要自己添加,不然是不会起作用的。
原文地址:https://iyaozhen.com/use-qiniu-image-storage-allow-baidu-share-support-https.html
SSL证书与Https应用部署小结 技术文章
为了提高网站的安全性,一般会在比较敏感的部分页面采用https传输,比如注册、登录、控制台等。像Gmail、网银等全部采用https传输。
- 单域名:只针对这个域名有效,不能用在其它域名下。
- 多域名:只针对列出的多个域名有效。
- 通配符域名(wildcard):对任意子域名有小,显示的是 *.example.com。
- 域名认证(Domain Validation):认证你的域名所有权和网站,申请验证简单,几分钟即可。
- 组织机构认证(Organization Validation):认证的域名和公司信息,需要提交公司资料认证。
- 扩展认证(Extended Validation,简称EV):这种证书会在浏览器中出现“很明显”的绿色地址栏,给用户的可信度最高。有安全评估保证。
- request.isSecure() 为true 表示当前为 https ,false表示 http 访问
- request.getScheme() 返回字符串 https 或 http
- ssl.crt(自己域名的服务器证书)
- sub.class1.server.ca.pem(startssl 的一类证书)
- ca.pem(startssl 的根证书)
- request.getScheme() //总是 http,而不是实际的http或https
- request.isSecure() //总是false(因为总是http)
- request.getRemoteAddr() //总是 nginx 请求的 IP,而不是用户的IP
- request.getRequestURL() //总是 nginx 请求的URL 而不是用户实际请求的 URL
- response.sendRedirect( 相对url ) //总是重定向到 http 上 (因为认为当前是 http 请求)
这样以上5项测试就都变为正确的结果了,就像用户在直接访问 Tomcat 一样。
原文地址:http://han.guokai.blog.163.com/blog/static/136718271201211631456811/
nginx配置ssl加密(单双向认证、部分https) 技术文章
nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番。一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的。所以就试了一下部分页面https(不能只针对某类动态请求才加密)和双向认证。下面分节介绍。
默认nginx是没有安装ssl模块的,需要编译安装nginx时加入--with-http_ssl_module
选项。
关于SSL/TLS原理请参考 这里,如果你只是想测试或者自签发ssl证书,参考 这里 。
提示:nignx到后端服务器由于一般是内网,所以不加密。
1. 全站ssl
全站做ssl是最常见的一个使用场景,默认端口443,而且一般是单向认证。
server { listen 443; server_name example.com; root /apps/www; index index.html index.htm; ssl on; ssl_certificate ../SSL/ittest.pem; ssl_certificate_key ../SSL/ittest.key; # ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; }
如果想把http的请求强制转到https的话:
server { listen 80; server_name example.me; rewrite ^ https://$server_name$request_uri? permanent; ### 使用return的效率会更高 # return 301 https://$server_name$request_uri; }
ssl_certificate
证书其实是个公钥,它会被发送到连接服务器的每个客户端,ssl_certificate_key
私钥是用来解密的,所以它的权限要得到保护但nginx的主进程能够读取。当然私钥和证书可以放在一个证书文件中,这种方式也只有公钥证书才发送到client。
ssl_protocols
指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2
,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
ssl_ciphers
选择加密套件,不同的浏览器所支持的套件(和顺序)可能会不同。这里指定的是OpenSSL库能够识别的写法,你可以通过 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'
(后面是你所指定的套件加密算法) 来看所支持算法。
ssl_prefer_server_ciphers on
设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
https优化参数
-
ssl_session_cache shared:SSL:10m;
: 设置ssl/tls会话缓存的类型和大小。如果设置了这个参数一般是shared
,buildin
可能会参数内存碎片,默认是none
,和off
差不多,停用缓存。如shared:SSL:10m
表示我所有的nginx工作进程共享ssl会话缓存,官网介绍说1M可以存放约4000个sessions。 详细参考serverfault上的问答ssl_session_cache。 -
ssl_session_timeout
: 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m
即30分钟甚至4h
。
设置较长的keepalive_timeout
也可以减少请求ssl会话协商的开销,但同时得考虑线程的并发数了。
提示:在生成证书请求csr文件时,如果输入了密码,nginx每次启动时都会提示输入这个密码,可以使用私钥来生成解密后的key来代替,效果是一样的,达到免密码重启的效果:
openssl rsa -in ittest.key -out ittest_unsecure.key
如果你是找一个知名的ssl证书颁发机构如VeriSign、Wosign、StartSSL签发的证书,浏览器已经内置并信任了这些根证书,如果你是自建C或获得二级CA授权,都需要将CA证书添加到浏览器,这样在访问站点时才不会显示不安全连接。各个浏览的添加方法不在本文探讨范围内。
2. 部分页面ssl
一个站点并不是所有信息都是非常机密的,如网上商城,一般的商品浏览可以不通过https,而用户登录以及支付的时候就强制经过https传输,这样用户访问速度和安全性都得到兼顾。
但是请注意不要理解错了,是对页面加密而不能针对某个请求加密,一个页面或地址栏的URL一般会发起许多请求的,包括css/png/js等静态文件和动态的java或php请求,所以要加密的内容包含页面内的其它资源文件,否则就会出现http与https内容混合的问题。在http页面混有https内容时,页面排版不会发生乱排现象;在https页面中包含以http方式引入的图片、js等资源时,浏览器为了安全起见会阻止加载。
下面是只对example.com/account/login
登录页面进行加密的例子:
root /apps/www; index index.html index.htm; server { listen 80; server_name example.com; location ^~ /account/login { rewrite ^ https://$server_name:443$request_uri? permanent; } location / { proxy_pass http://localhost:8080; ### Set headers #### proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; } } server { listen 443 ssl; server_name example.com; ssl on; ssl_certificate ../SSL/ittest.pem; ssl_certificate_key ../SSL/ittest.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; location ^~ /account/login { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; ### Most PHP, Python, Rails, Java App can use this header -> https ### proxy_set_header X-Forwarded-Proto $scheme; } location / { rewrite ^ http://$server_name$request_uri? permanent; } }
关于rewrite与location的写法参考这里。当浏览器访问http://example.com/account/login.xx
时,被301到https://example.com/account/login.xx
,在这个ssl加密的虚拟主机里也匹配到/account/login
,反向代理到后端服务器,后面的传输过程是没有https的。这个login.xx页面下的其它资源也是经过https请求nginx的,登录成功后跳转到首页时的链接使用http,这个可能需要开发代码里面控制。
-
上面配置中使用了
proxy_set_header X-Forwarded-Proto $scheme
,在jsp页面使用request.getScheme()
得到的是https 。如果不把请求的$scheme协议设置在header里,后端jsp页面会一直认为是http,将导致响应异常。 -
ssl配置块还有个与不加密的80端口类似的
location /
,它的作用是当用户直接通过https访问首页时,自动跳转到不加密端口,你可以去掉它允许用户这样做。
3. 实现双向ssl认证
上面的两种配置都是去认证被访问的站点域名是否真实可信,并对传输过程加密,但服务器端并没有认证客户端是否可信。(实际上除非特别重要的场景,也没必要去认证访问者,除非像银行U盾这样的情况)
要实现双向认证HTTPS,nginx服务器上必须导入CA证书(根证书/中间级证书),因为现在是由服务器端通过CA去验证客户端的信息。还有必须在申请服务器证书的同时,用同样的方法生成客户证书。取得客户证书后,还要将它转换成浏览器识别的格式(大部分浏览器都认识PKCS12格式):
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
同时别忘了在 nginx.conf 里配置信任的CA:(如果是二级CA,请把根CA放在后面,形成CA证书链)
proxy_ignore_client_abort on; ssl on; ... ssl_verify_client on; ssl_verify_depth 2; ssl_client_certificate ../SSL/ca-chain.pem; # 在双向location下加入: proxy_set_header X-SSL-Client-Cert $ssl_client_cert;
nginx默认安装了一个ngx_http_geo_module
,这个geo模块可以根据客户端IP来创建变量的值,用在如来自172.29.73.0/24段的IP访问login时使用双向认证,其它段使用一般的单向认证。
geo $duplexing_user { default 1; include geo.conf; # 注意在0.6.7版本以后,include是相对于nginx.conf所在目录而言的 }
语法 geo [$address] $variable { … }
,位于http段,默认地址是$reoute_addr
,假设 conf/geo.conf
内容:
127.0.0.1/32 LOCAL; # 本地 172.29.73.23/32 SEAN; # 某个IP 172.29.73.0/24 1; # IP段,可以按国家或地域定义后面的不同的值
需要配置另外一个虚拟主机server{ssl 445},里面使用上面双向认证的写法,然后在80或443里使用变量$duplexing_user
去判断,如果为1就rewrite到445,否则rewrite到443。具体用法可以参考nginx geo使用方法。
参考
- Nginx部署部分https与部分http
- Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程
- SSL & SPDY 已全面部署
- SSL证书与Https应用部署小结
- ngx_http_ssl_module docs
- Optimizing HTTPS on Nginx
- http://zhangge.net/4861.html
- http://blog.chinaunix.net/uid-192074-id-3135733.html
原文地址:http://seanlook.com/2015/05/28/nginx-ssl/
NginxRewrite规则判断普通用户与搜索引擎爬虫(UA)实现https跳转 技术文章
前段时间写了一篇关于给博客安装证书加密访问的文章,在站长平台,百度说支持https,一个月后发现网站的流量排名跌成了狗,为了逼格保留这个https,又为了不和百度做对,查阅相关资料后选择用user_agent来解决,nginx本身就能判断UA,以下代码供大家参考,添加到nginxRewrite配置文件里即可,域名换成自己的。
具体的代码如下(复制吧-骚年):
server { listen 80; server_name mrxn.net mrxn.net; set $flag 0; if ($host != 'mrxn.net') { set $flag 1; } if ($server_port = 80) { set $flag 1; } if ($scheme = http) { set $flag 1; } if ($http_user_agent ~* (baiduspider|soso|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)){ set $flag 2; } if ($flag = 1){ rewrite ^/(.*)$ https://mrxn.net/$1 redirect; } error_page 497 https://mrxn.net$request_uri; }
这段规则具体作用是:将国内部分对https支持不好的搜索引擎蜘蛛定向到http页面,将普通用户和其他搜索引擎定向到https页面(谷歌更喜欢https站点)。
相关文章:
一段代码让nginx实现网站资源防盗链
nginx配置location总结及rewrite规则写法
nginx配置ssl加密(单双向认证、部分https)
NginxRewrite规则判断普通用户与搜索引擎爬虫(UA)实现https跳转
SSL/TLS原理详解
OpenSSL 与 SSL 数字证书概念贴
基于OpenSSL自建CA和颁发SSL证书
原文属于博友创造:https://tmy123.com/user-agent.html
浅谈HTTPS链接的重要性和安全性 网络安全
今天我的一位仁兄被人误导说HTTPS慢,就这个问题我们来浅谈下HTTPS的速度和安全。首先HTTPS是一个优良而且很棒的协议,他为服务器和客户端之间的数据传输提供了强有力的保障。浅谈HTTPS的速度和安全事实证明HTTPS速度是快的。
Mrxn通过实验测试结果证明,HTTPS确实需要CPU来中断SSL连接,这需要的处理能力对于现代计算机而言是小菜一碟了,你会遇到SSL性能瓶颈的可能性完全为0,首屏加载时间与HTTP协议的时间几乎一致。慢,只会在你网络出现问题的时候发生,和SSL/HTTPS毫无干系,或者极有是你的应用程序性能上遇到瓶颈。
HTTPS是一个重要的连接保障
虽然HTTPS并不放之四海而皆准的web安全方案,但是没有它你就不能以策万全。所有的web 安全都倚赖你拥有了HTTPS。如果你没有它,不管对密码做了多强的哈希加密,或者做了多少数据加密,攻击者都可以简单的模拟一个客户端的网络连接,读取它们的安全凭证,极具威胁。此外,证书签名很显然不是一个完美的实践,但每一种浏览器厂商针对认证机构都有相当严格和严谨的规则。要成为一个受到信任的认证机构是非常难的,而且要保持自己良好的信誉也同样是困难的。
HTTPS流量拦截可以避免
本质上讲,可以使自己的客户只去信任真正可用的 SSL 证书,有效的阻挡所有类型的SSL MITM攻击,如果你是要把 SSL 服务部署到一个不受信任的位置,你最应该考虑使用SSL证书。
HTTPS拥有免费的证书服务
国内和国外都提供了免费的基础等级SSL证书,普及了SSL的支持。 一旦让加密的方案上线,你就能够对你的网站和服务进行100%的加密,完全没有任何花费。
HTTP 在私有网络上并不安全
如果一个攻击者获得了对你的任何内部服务的访问权限,所有的HTTP流量都将会被拦截和解读,这就是为什么HTTPS不管是在公共网络还是私有网络都极其重要的原因。如果是把服务部署在AWS上面,就不要想让你的网络流量是私有的了,因为AWS网络就是公共的,这意味着其它的AWS用户都潜在的能够嗅探到你的网络流量。
2015年百度启用HTTPS搜索
在2015年5月,百度也启用了HTTPS安全搜索,并且支持HTTPS站点的积极优先收录,更可以证明,互联网巨头也开始注重网络传输安全了。
总结
如果你正在做网页服务,毫无疑问,你应该使用 HTTPS。它很容易且能获得用户信任,没有理由不用它。作为ICP,作为程序员我们必须要承担起保护用户的重任。
PS:没有经过事实验证的任何说法,不值得我们信任!