关于ssl:必看HTTP如何升级成HTTPS

将HTTP降级为HTTPS次要波及获取SSL/TLS证书并在您的服务器上配置它。这个过程能够加强网站的安全性,通过加密客户端和服务器之间的通信来爱护数据。上面是一个根本的步骤指南: 购买SSL/TLS证书:您能够从许多证书颁发机构(CA)购买SSL/TLS证书,比方JoySSL提供收费证书,而Digicert、Comodo、Symantec等则提供付费证书。依据您的需要,您可能须要抉择不同类型的证书,如域验证(DV)、组织验证(OV)或扩大验证(EV)证书。生成CSR(证书签名申请):在您的服务器上生成CSR。这一步通常波及到输入您的组织和网站的信息,CSR蕴含了您的公钥。您须要将CSR提交给CA来申请证书。验证域名所有权:证书颁发机构在颁发证书前须要验证您对域名的所有权。这通常通过电子邮件验证、DNS记录验证或在您的网站上搁置一个特定的验证文件来实现。装置证书:一旦您的申请被批准,您将收到一个SSL/TLS证书。而后,您须要在服务器上安装这个证书。装置过程会依据您的服务器和应用的软件而有所不同。配置服务器以应用HTTPS:装置证书后,您须要配置您的web服务器(如Apache、Nginx等),以确保它应用SSL/TLS证书来为HTTPS申请提供服务。这包含配置端口443(HTTPS默认端口)并确保所有HTTP申请都被重定向到HTTPS。测试您的配置:应用SSL查看工具,如Qualys SSL Labs的SSL Server Test,来测试您的服务器配置并确保一切正常。更新您的网站:确保您的网站上的所有资源(如图片、脚本和样式表)都应用HTTPS URLs,以防止“混合内容”问题,这可能会导致浏览器正告。定期续订证书:大多数SSL/TLS证书都有有效期限(通常是一年)。确保在证书到期前续订,以放弃网站的平安连贯。收费SSL证书申请:SSL证书详情 通过以上步骤,您能够将HTTP降级为HTTPS,从而为您的网站访问者提供更平安的浏览体验。

February 28, 2024 · 1 min · jiezi

关于ssl:免费通配符SSL证书申请

February 27, 2024 · 0 min · jiezi

关于ssl:什么是OV-SSL证书怎么申请

February 27, 2024 · 0 min · jiezi

关于ssl:小程序为什么需要SSL证书应该如何选择SSL证书

截止到2022年,微信用户人数超12亿,如此宏大的用户群体可为企业带来了微小的商机和利益,由此,泛滥企业纷纷开发制作基于其生态的微信小程序。然而值得注意的是,小程序必须应用HTTPS发动网络申请,也就是说必须部署SSL证书。那么小程序为什么须要SSL证书?咱们应该如何为小程序抉择适合的SSL证书呢? 小程序为什么须要SSL证书?1、官网规定要求微信官网小程序开发平台要求:小程序所有网络申请都要求应用HTTPS。小程序申请时零碎会对服务器域名应用的HTTPS进行校验,如果校验失败,则申请不能胜利发动,这就意味着小程序必须部署装置SSL证书。 2、加密隐衷信息在小程序中,用户的登录账号、领取明码、个人身份信息等隐衷信息须要通过网络传输给后盾服务器进行解决,小程序应用SSL证书进行HTTPS加密传输后,可无效避免信息被窃取或篡改,确保用户隐衷平安。 如何为小程序抉择适合的SSL证书?在为小程序抉择适合的SSL证书之前,先来看看小程序官网对SSL证书的要求: · SSL证书必须无效· SSL证书必须被零碎信赖,即根证书已被零碎内置· 部署 SSL 证书的网站域名必须与证书颁发的域名统一· SSL证书必须在有效期内· SSL证书的信赖链必须残缺(须要服务器配置)· 不反对自签名SSL证书· TLS 必须反对 1.2 及以上版本 基于小程序官网对SSL证书的要求,咱们就能够依据需要抉择证书了。 1、品牌抉择官网要求SSL证书必须被零碎信赖,即根证书已被零碎内置,那么市面上满足此要求的SSL证书品牌有JoySSL、Digicert、Geotrust、GlobalSign、Sectigo等等,不同品牌的SSL证书在价格、信用和可信度上会有所不同,咱们能够依据本人的需要和估算进行抉择。 2、类型抉择SSL证书依照验证形式的不同,能够分为DV SSL证书(域名验证型)、OV SSL证书(组织验证型)或EV SSL证书(加强验证型),他们的安全级别由低到高,其中: · DV SSL证书实用于个别的小程序,比方集体开发的展现类小程序;· OV SSL证书实用于商务类小程序,比方企业或集体开发的满足业务需要的小程序;· EV SSL证书实用于电商、金融机构等有严格平安需要的小程序,比方大型交易类小程序。 证书详情:小程序SSL证书

February 23, 2024 · 1 min · jiezi

关于ssl:安装SSL证书会拖慢网站访问速度吗这8大误区不要信

随着谷歌、百度等寰球支流浏览器发表优先展现应用HTTPS协定的网站之后,越来越多的网站开始装置SSL证书。然而现如今依然有很多用户对SSL证书的了解存在误会,明天JoySSL跟大家说下最容易碰到的8大误区,让大家对SSL证书有更加清晰的意识。 误区一:装置SSL证书会拖慢网站访问速度齐全不会!网站装置了SSL证书后,运行过程中尽管HTTPS比HTTP多出了SSL握手环节。但这个环节消耗的工夫个别仅有几百毫秒,要晓得100毫秒才相当于0.1秒,所以咱们很难察觉速度上的变动 误区二:只有金融网站才要SSL证书人们对银行、电商、金融等网站必须启用HTTPS已达成共识,但其余类型的网站是否有这个必要呢?答案是很有必要,SSL证书的次要作用就是服务器认证和加密传输数据,确保用户的隐衷平安和内容的真实性,而且很多浏览器对未装置SSL证书的网站收回“不平安”的正告,会影响用户体验度,大大降低了网站的可信度。因而,各个类型的网站都有必要装置SSL证书。 误区三:购买装置SSL证书会减少企业老本为实现HTTPS而去降级服务器曾经成为历史。随着硬件性能的突飞猛进,HTTPS施加在硬件之上的运算压力微不足道,再加上正当的优化和部署,简直能够忽略不计。 误区四:SSL证书仅用于网站依据BuiltWith的数据报道,目前Internet上有超过1.57亿个带有SSL证书的网站,无效SSL证书覆盖率达到了82.2%。SSL证书目前已成为保护网站平安,避免信息泄露的平安技术手段,特地是在网站PC端广泛应用上。然而,光在网站部署SSL证书是不够的,当初挪动端简直已成支流的获取信息的形式之一。还有,邮件服务器不仅Web页面须要部署SSL证书,同时SMTP和IMAP/POP3服务器也必须部署SSL证书,能力保障邮箱明码平安和邮件内容传输平安……总之,只有是有从客户端到云端传输数据的所有利用都须要在服务器端部署SSL证书实现https加密传输。 误区五:国外的SSL证书更好用国外品牌的SSL证书因为起步较早,所以在性能上长期当先国产SSL证书,导致大家感觉国外的更好。然而当初国内网络技术的疾速倒退,国产SSL证书也在疾速崛起。同时在证书申请速度、优惠力度等方面较国外证书更有劣势,所以国外证书不再是国内网站的惟一抉择,当初大家抉择更多,依据理论需要来抉择更适合。 误区六:有了HTTPS,网站就彻底平安了“HTTPS万能论”是不存在的。说的直白一点,HTTPS是利用SSL证书满足网络通讯传输加密和服务器身份验证这两个平安需要,即防窃取、防篡改、防钓鱼,然而别的平安需要是满足不了的。泛滥网站平安问题那么多,也不可能仅靠一张SSL证书就全副解决了对吧。 误区七:SSL证书能够随便申请其实SSL证书不是给钱就能随便申请到的,如果你申请的是DV SSL证书,那么仅需验证域名所有权即可,适宜正规的集体站或小型微官网类网站。如果申请的是OV SSL证书、EV SSL证书这种高级的SSL证书,是须要提交实在牢靠的材料(如企业营业执照、组织机构代码证等),并且须要通过正规的CA人工审核通过后才可签发,等级越高的SSL证书,审核越严格,很多企业因为提交材料不齐全或不实在而导致申请失败,所以并不是有钱任性就能够随便申请的哦。 误区八:SSL证书很贵网站部署SSL证书,很多人比拟在意的是SSL证书价格,很多人潜意识里会感觉SSL证书很贵,然而SSL证书价格不一,具体看本人网站适宜什么类型的SSL证书,常见的SSL证书类型有DV SSL证书、OV SSL证书、EV SSL证书,安全级别也是顺次递增。个别SSL证书价格都是在几百到几千甚至几万元左右。大家能够依据本人的理论能力抉择网站适宜的SSL证书价格。 在哪里购买最便宜的SSL证书?申请收费的SSL证书:SSL证书详情

February 22, 2024 · 1 min · jiezi

关于ssl:没有代码签名会怎么样

随着Windows的SmartScreen性能的遍及,如果一个软件公布的时候没有通过代码签名证书进行数字签名,那这个软件从公布,下载,装置,运行等,根本都会受到零碎的危险正告,运行拦挡。其目标在于警示用户这个软件来路不明,危险未知,并试图阻止用户持续应用该软件。这就好比没有获得执照人在到处售卖商品,那么就会被相干监管部门进行查处。Windows作为一个零碎,它也会对运行在零碎上的软件进行肯定水平的验证,其中,软件是否具备数字签名就是一个很重要的衡量标准。 一:软件具备数字签名有哪些劣势软件的发布者身份可知,软件来自哪里不再成谜。这肯定水平上晋升了软件的可靠性和用户的信赖感;具备数字签名的软件,能够表明自公布之后,未被非法篡改。因为数字签名能够保障软件的完整性,一旦被签名过的软件代码被批改,数字签名会立刻收回正告;能够立刻取得微软SmartScreen的信赖,打消从下载到装置运行时所有的不敌对正告和拦挡,这对一个刚开发公布的新软件来说尤为重要,大概率晋升您软件的胜利装置率。在有些国家和地区,软件公布须要数字签名可能曾经写进了相干条款,这是合规的重要条件。软件具备数字签名还有很多的劣势,不一一列举,它就好比咱们的身份证,帮忙咱们证实咱们的身份,爱护咱们的权利。二:代码签名证书与数字签名的关系代码签名证书就是帮忙软件增加数字签名的一个工具,它是一种数字证书。一张代码签名证书能够在其有效期内,为不限数量的软件增加签名。而且只有在签名的时候加上工夫戳,那么软件的数字签名不会因为代码签名证书的过期而生效。代码签名证书就好比一支具备应用有效期的钢笔,您的软件就好比各种须要用钢笔签名的文档。钢笔一段时间后可能不再应用,但不影响钢笔曾经在各种文档上写进去的签名。三:代码签名证书申请流程申请代码签名证书,次要分为4大步骤:1、确认证书型号并购买2、提交代码所属公司信息3、验证程序代码所有权4、收到Ukey并应用 申请代码签名证书:证书详情信息 以上就是对于代码签名证书的全部内容了,应用代码签名证书不仅爱护了软件开发者的权利,让软件能在互联网上疾速平安的公布,也能够让用户能够释怀平安的下载,防止被病毒、恶意代码软件所侵害。

February 21, 2024 · 1 min · jiezi

关于ssl:SSL证书怎么选择

<article class=“article fmt article-content”><p>咱们在拜访一个站点的时候,如果网页地址栏提醒“不平安”,你还敢持续浏览吗?<br/><br/>互联网曾经融入生存的方方面面,但随之而来的钓鱼网站、信息窃取等问题,总是让人头疼。咱们在网上购物、应用网上银行或者在社交网站分享咱们的私密信息时,都心愿这些信息可能失去充沛的爱护。在这外面,SSL证书施展着重要作用。</p><p><strong>一:SSL证书是什么?</strong><br/>SSL(Secure Sockets Layer,安全套接层)证书,通过对数据进行加密,确保数据在传输过程中不被第三方窃取。</p><p>当你在浏览器上看到一个网站地址前有一个小锁,或者地址栏显示https:// ,这就意味着该网站曾经装置了SSL证书,你在这个网站上的操作和信息传输都是平安的。<br/></p><p><strong>二:证书有哪些作用?</strong></p><ul><li>加密信息:SSL证书能够对用户与服务器之间传输的数据进行加密,避免数据在传输过程中被歹意窃取。</li><li>身份验证:SSL证书能够验证网站的实在身份,避免用户拜访混充的网站,升高网络钓鱼等危险。</li><li>加强信赖:装置SSL证书的网站能够强化网站的身份可信水平,使用户能更安心地拜访网站,有利于建设品牌形象。</li><li>进步搜索引擎排名:装置SSL证书的网站更容易让搜索引擎信赖,收录速度更快,搜寻后果中的排名更高。</li></ul><p><strong>三:证书怎么抉择?</strong></p><ul><li><strong>DV 证书</strong>:能够对网站数据加密,并且反对爱护单个域名、多个域名或者主域名下的所有子域名。不过 DV 证书都是只验证域名的所有权,无奈证实企业身份,比拟适宜用于集体网站、不波及敏感信息交互的中小企业网站。</li><li><strong>OV 证书</strong>:能够对网站数据加密,并且反对爱护单个域名、多个域名或者主域名下的所有子域名。除了验证域名的所有权以外,还会验证企业身份,比拟适宜用于中小型企业网站、电子商务网站等波及用户信息交互的场景。</li><li><strong>EV 证书</strong>:能够对网站数据加密,并且反对爱护单个域名、多个域名或者主域名下的所有子域名。作为目前业界安全等级最高的 SSL 证书,具备更严格、更残缺的企业身份验证机制,并且如果加密被破解导致数据泄露,会提供超高的赔付保障。EV 证书最能加强品牌可信度、进步网站SEO排名,堪称是“王中王”证书,实用于大型企业、金融机构等对安全性要求极高的场景。</li></ul><p><strong>收费的SSL证书</strong>:证书详情</p></article>

February 20, 2024 · 1 min · jiezi

关于ssl:SSL证书要钱吗SSL证书一定要安装吗

为了爱护网站的数据安全和用户隐衷,越来越多的网站开始采纳SSL证书来加密数据传输。那么,SSL证书到底是否须要免费呢?又是否肯定要装置呢?本文将从业余角度为您解答这些问题。 首先,咱们来理解一下什么是SSL证书。SSL(Secure Sockets Layer)证书,即安全套接层协定证书,是一种用于加密数据传输的技术。它通过在客户端和服务器之间建设一条加密通道,确保数据在传输过程中的安全性。SSL证书的次要作用有以下几点: 确保数据的平安传输。SSL证书通过加密技术,避免数据在传输过程中被窃取、篡改或伪造。进步网站的信誉度。领有SSL证书的网站会在浏览器地址栏显示一个绿色的锁形态图标,表明该网站应用了平安加密技术,从而进步用户对网站的信任度。爱护用户隐衷。SSL证书能够爱护用户的个人信息,如用户名、明码、信用卡号等,避免这些信息在传输过程中被泄露。那么,SSL证书是否须要免费呢?答案是:大部分是须要的。SSL证书的申请、购买和保护都须要肯定的费用。 然而,SSL证书的费用并不是变化无穷的,它会因为不同的证书类型、购买年限、颁发机构等因素而有所不同。一般来说,单域名的SSL证书价格在几百元到几千元人民币之间;多域名的SSL证书价格则会更高一些。此外,还有一些收费的SSL证书,但它们的安全性和可靠性绝对较低,个别只实用于集体博客、测试网站等小型我的项目。 收费SSL证书:证书详情 接下来,咱们来探讨一下SSL证书是否肯定要装置的问题。尽管SSL证书并非强制要求装置,但在以后的网络环境下,为了保障网站的数据安全和用户的隐衷权利,倡议每个网站都应尽量装置SSL证书。起因如下: 法律法规要求。随着网络安全法、个人信息保护法等相干法律法规的出台和施行,越来越多的国家和地区要求网站必须采取平安加密措施,否则将面临法律责任。用户体验需要。现在,用户越来越器重网络安全和隐衷爱护。如果一个网站没有装置SSL证书,用户可能会放心本人的信息安全,从而不违心在该网站上提供个人信息或进行交易。搜索引擎优化需要。搜索引擎如Google、百度等曾经将HTTPS协定作为排名的一个重要因素,领有SSL证书的站点在搜寻后果中的排名会绝对较高。因而,装置SSL证书有助于进步网站的搜索引擎排名和流量。企业品牌形象需要。对于企业来说,领有SSL证书不仅可能保障用户数据安全,还能晋升企业的品牌形象和信任度,从而吸引更多的用户和客户。在抉择和购买SSL证书时,还须要留神以下几点: 抉择出名的颁发机构。购买SSL证书时,应抉择具备良好名誉和实力的颁发机构,以确保证书的安全性和可靠性。抉择适合的证书类型。依据网站的理论需要,抉择适合的单域名或多域名SSL证书。留神证书的有效期和续费工夫。购买SSL证书时,应留神其有效期和到期工夫,并提前进行续费操作,免得因证书过期而导致网站平安问题。定期更新和保护。取得SSL证书后,应定期更新和保护证书,以保障其安全性和有效性。收费SSL证书:证书详情 总之,随着互联网的一直倒退,网络安全问题日益严重。为了保障网站的数据安全和用户的隐衷权利,装置SSL证书曾经成为一个必要的动作。尽管SSL证书须要免费,但从久远来看,它为网站带来的价值是无奈用金钱掂量的。心愿本文可能帮忙您更好地理解SSL证书的相干常识,为您的网站平安保驾护航。

February 19, 2024 · 1 min · jiezi

关于ssl:一文带你了解-SSL-协议

什么是SSL简称是SSL,全称Secure Sockets Layer 安全套接字协定,个别咱们在学习 SSL 的时候,都会和 TLS一起来学习的,为什么呢?因为 SSL 和 TLS 都是为网络通信提供平安及数据完整性的一种平安协定。TLS与SSL在传输层与应用层之间对网络连接进行加密。咱们先看 SSL协定,而后在看 TLS协定。SSL协定位于 TCP/IP 协定与各种应用层协定之间,为数据通讯提供平安反对。SSL 协定可分为两层:SSL记录协定(SSL Record Protocol):它建设在牢靠的传输协定(如TCP)之上,为高层协定提供数据封装、压缩、加密等基本功能的反对。SSL握手协定(SSL Handshake Protocol):它建设在SSL记录协定之上,用于在理论的数据传输开始前,通信单方进行身份认证、协商加密算法、替换加密密钥等。要说 SSL 协定咱们先来看看构造,SSL的体系结构中蕴含两个协定子层,其中底层是SSL记录协定层(SSL Record Protocol Layer);高层是SSL握手协定层(SSL HandShake Protocol Layer)SSL记录协定层的作用是为高层协定提供根本的平安服务的,而SSL握手协定层是用于SSL治理信息的替换,容许利用协定传送数据之间互相验证,协商加密算法和生成密钥的。SSL的工作过程SSL 的工作过程实际上是分为了两个局部,一个是发送,而另一个就是接管,每个局部所解决的事件也是不一样的,毕竟一个是发送一个是接管。发送过程:(1)从下层承受要发送的数据(包含各种音讯和数据);(2)对信息进行分段,分成若干记录;(3)应用指定的压缩算法进行数据压缩;(4)应用指定的MAC算法生成MAC;(5)应用指定的加密算法进行数据加密;(6)增加SSL记录协定的头,发送数据。到了这个地位,发送过程就曾经完结,接下来就是接管的过程了。接管过程:(1)接收数据,从SSL记录协定的头中获取相干信息;(2)应用指定的解密算法解密数据;(3)应用指定的MAC算法校验MAC;(4)应用压缩算法对数据解压缩(在须要进行);(5)将记录进行数据重组;(6)将数据发送给高层。(7)SSL记录协定解决的最初一个步骤是附加一个SSL记录协定的头,以便形成一个SSL记录。SSL记录协定头中蕴含了SSL记录协定的若干管制信息。如果面试官问你,简述SSL的工作流程?如果你这么说,感觉就不是那么的给力,你这时候就能够给他辨别一下了,就是服务器认证阶段,和用户认证的阶段了。服务器认证阶段:(1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连贯;(2)服务器依据客户的信息确定是否须要生成新的主密钥,如须要则服务器在响应客户的“Hello”信息时将蕴含生成主密钥所需的信息;(3)客户依据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;(4)服务器复原该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。用户认证阶段:在此之前,服务器曾经通过了客户认证,这一阶段次要实现对客户的认证。经认证的 服务器发送一个发问给客户,客户则返回(数字)签名后的发问和其公开密钥,从而向服务器提供认证。把这玩意给面试官一说,没啥故障吧。SSL 的加密形式说到加密,这就有点深刻了,加密算法次要分为了两大类。第一类:对称加密第二类:非对称加密什么事对称加密呢?对称式加密实际上就是加密和解密应用同一个密钥,通常称之为“Session Key ”这种加密技术在当今被宽泛采纳,如美国政府所采纳的DES加密规范就是一种典型的“对称式”加密法,它的Session Key长度为56bits。而非对称加密就略微简单了,非对称式加密就是加密和解密所应用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必须配对应用,否则不能关上加密文件。这里的“公钥”是指能够对外颁布的,“私钥”则不能,只能由持有人一个人晓得。它的优越性就在这里,因为对称式的加密办法如果是在网络上传输加密文件就很难不把密钥通知对方,不论用什么办法都有可能被他人窃听到。而非对称式的加密办法有两个密钥,且其中的“公钥”是能够公开的,也就不怕他人晓得,收件人解密时只有用本人的私钥即能够,这样就很好地防止了密钥的传输安全性问题。如果应用的话,各位想怎么是用呢?依据方才阿粉说的服务器认证和用户认证了,那么就持续来剖析一下这个过程中 SSL 是如何加密的。简略说:(1)认证服务器 (2)协商会话秘钥 (3)加密传输然而如果你敢这么说,你会被锤死。强制在合成一下:第一步:客户端给出反对SSL协定版本号,一个客户端随机数(Client random,请留神这是第一个随机数),客户端反对的加密办法等信息;第二步:服务端收到信息后,确认单方应用的加密办法,并返回数字证书,一个服务器生成的随机数(Server random,留神这是第二个随机数)等信息;第三步:客户端确认数字证书的有效性,而后生成一个新的随机数(Premaster secret),而后应用数字证书中的公钥,加密这个随机数,发给服务端。第四步:服务端应用本人的私钥,获取客户端发来的随机数(即Premaster secret);(第三、四步就是非对称加密的过程了)第五步:客户端和服务端通过约定的加密办法(通常是AES算法),应用后面三个随机数,生成对话密钥,用来加密接下来的通信内容;这是不是就实现了呢?你学会了么? 参考链接:2 Ways to Fix SSL_ERROR_RX_RECORD_TOO_LONG

August 23, 2022 · 1 min · jiezi

关于ssl:SSL证书原理

HTTPS 工作原理HTTPS在传输数据之前须要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立单方加密传输数据的明码信息。TLS/SSL协定不仅仅是一套加密传输的协定,更是一件通过艺术家精心设计的艺术品,TLS/SSL中应用了非对称加密,对称加密以及HASH算法。握手过程的具体形容如下: 1)浏览器将本人反对的一套加密规定发送给网站。2)网站从中选出一组加密算法与HASH算法,并将本人的身份信息以证书的模式发回给浏览器。证书外面蕴含了网站地址,加密公钥,以及证书的颁发机构等信息。3)浏览器取得网站证书之后浏览器要做以下工作:a) 验证证书的合法性(颁发证书的机构是否非法,证书中蕴含的网站地址是否与正在拜访的地址统一等),如果证书受信赖,则浏览器栏外面会显示一个小锁头,否则会给出证书不受信的提醒。b) 如果证书受信赖,或者是用户承受了不受信的证书,浏览器会生成一串随机数的明码,并用证书中提供的公钥加密。c) 应用约定好的HASH算法计算握手音讯,并应用生成的随机数对音讯进行加密,最初将之前生成的所有信息发送给网站。 4)网站接管浏览器发来的数据之后要做以下的操作:a) 应用本人的私钥将信息解密取出明码,应用明码解密浏览器发来的握手音讯,并验证HASH是否与浏览器发来的统一。b) 应用明码加密一段握手音讯,发送给浏览器。 5)浏览器解密并计算握手音讯的HASH,如果与服务端发来的HASH统一,此时握手过程完结,之后所有的通信数据将由之前浏览器生成的随机明码并利用对称加密算法进行加密。这里浏览器与网站相互发送加密的握手音讯并验证,目标是为了保障单方都取得了统一的明码,并且能够失常的加密解密数据,为后续真正数据的传输做一次测试。另外,HTTPS个别应用的加密与HASH算法如下: 非对称加密算法:RSA,DSA/DSS对称加密算法:AES,RC4,3DESHASH算法:MD5,SHA1,SHA256HTTPS对应的通信时序图如下:ssl vs tls and how to check tls version in linux HTTPS协定和HTTP协定的区别:https协定须要到ca申请证书,个别收费证书很少,须要交费。http是超文本传输协定,信息是明文传输,https 则是具备安全性的ssl加密传输协定。http和https应用的是齐全不同的连贯形式用的端口也不一样,前者是80,后者是443。http的连贯很简略,是无状态的 。HTTPS协定是由SSL+HTTP协定构建的可进行加密传输、身份认证的网络协议, 要比http协定平安。 exploring ssl port with examples SSL 证书从后面咱们能够理解到HTTPS外围的一个局部是数据传输之前的握手,握手过程中确定了数据加密的明码。在握手过程中,网站会向浏览器发送SSL证书,SSL证书和咱们日常用的身份证相似,是一个反对HTTPS网站的身份证明,SSL证书外面蕴含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输明码的公钥等信息,因为公钥加密的明码只能被在申请证书时生成的私钥解密,因而浏览器在生成明码之前须要先核查以后拜访的域名与证书上绑定的域名是否统一,同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书谬误的提醒。在这一部分我将对SSL证书的验证过程以及个人用户在拜访HTTPS网站时,对SSL证书的应用须要留神哪些平安方面的问题进行形容。 fix ssl key values mismatch 证书的类型实际上,咱们应用的证书分很多种类型,SSL证书只是其中的一种。证书的格局是由X.509规范定义。SSL证书负责传输公钥,是一种PKI(Public Key Infrastructure,公钥根底构造)证书。咱们常见的证书依据用处不同大抵有以下几种: 1、SSL证书,用于加密HTTP协定,也就是HTTPS。 2、代码签名证书,用于签名二进制文件,比方Windows内核驱动,Firefox插件,Java代码签名等等。 3、客户端证书,用于加密邮件。 4、双因素证书,网银专业版应用的USB Key外面用的就是这种类型的证书。 这些证书都是由受认证的证书颁发机构——咱们称之为CA(Certificate Authority)机构来颁发,针对企业与集体的不同,可申请的证书的类型也不同,价格也不同。CA机构颁发的证书都是受信赖的证书,对于SSL证书来说,如果拜访的网站与证书绑定的网站统一就能够通过浏览器的验证而不会提醒谬误。 SSL证书申请与规定SSL证书能够向CA机构通过付费的形式申请,也能够本人制作。CA机构颁发的证书价格十分低廉,而且有效期个别只有一年到三年不等(年数不同,价格也不同),过期之后还要再次交钱申请,因而个别只有企业才会申请证书。然而随着集体网站的增多,目前也有针对集体的SSL证书服务,价格绝对便宜一些,国内的话400多块钱就能申请到一个,国外更是有收费的SSL证书能够申请。在申请SSL证书时须要向CA机构提供网站域名,营业执照,以及申请人的身份信息等。网站的域名十分重要,申请人必须证实本人对域名有所有权,如果反对Hotmail.com,Gmail.com的SSL证书都能够轻易申请,黑客们就不必做假证书坑骗了。 此外,一个证书个别只绑定一个域名,如果CA机构情绪好的话,会收费再绑一个,比方你要申请域名时绑定的域名是 www.runoob.com,那么只有在浏览器地址是 https://www.runoob.com 的时候,这个证书才是受信赖的,如果地址是https://tt.runoob.com或者https://login.runoob.com,那么这个证书因为拜访的域名与证书绑定的域名不同,依然会被浏览器显示为不受信赖的。 CA机构也提供申请通配符域名(例如,*.runoob.com),通配符域名相当于绑定了主域名下的所有域名,因而应用起来十分不便,然而价格也超级低廉,一个通配符域名一年大略得5000块钱,只有企业才能够申请。 understanding x509 certificate with openssl command 上面就来看看一个证书的信息: 在拜访hotmail的时候会跳转到login.live.com,这时IE浏览器上会有一个小锁头,点一下那个小锁头再点击外面的"查看证书"就会呈现上图的证书窗口,这外面咱们能够看到这个证书只有一个用处——向近程计算机证实身份信息,证书的用处会有很多,SSL只是其中之一。在"颁发给"这一项就是这个证书在申请时绑定的域名;上面的"颁发者"是证书的颁发机构。最上面的两个日期是证书申请工夫以及过期的工夫。这里咱们能够留神一下"颁发者"的信息,外面有"Extended Validation SSL"的字样,表明了这个证书是一个EV SSL证书(扩大验证SSL证书),EV SSL证书有个特点就是能够让浏览器的地址栏变绿,同时显示进去证书所属公司的名称,如下图所示: EV SSL证书与其余的证书相比,费用更高。 以上说的是向CA机构申请证书的状况,如果集体网站只为加密传输也能够本人制作SSL证书,本人制作的证书不会受到浏览器的信赖,在拜访的时候因为证书验证失败而给出正告。 证书的验证过程证书以证书链的模式组织,在颁发证书的时候首先要有根CA机构颁发的根证书,再由根CA机构颁发一个中级CA机构的证书,最初由中级CA机构颁发具体的SSL证书。咱们能够这样了解,根CA机构就是一个公司,根证书就是他的身份凭证,每个公司由不同的部门来颁发不同用处的证书,这些不同的部门就是中级CA机构,这些中级CA机构应用中级证书作为本人的身份凭证,其中有一个部门是专门颁发SSL证书,当把根证书,中级证书,以及最初申请的SSL证书连在一起就造成了证书链,也称为证书门路。在验证证书的时候,浏览器会调用零碎的证书管理器接口对证书门路中的所有证书一级一级的进行验证,只有门路中所有的证书都是受信的,整个验证的后果才是受信。咱们还是以login.live.com这个证书举例,在查看证书的时候,点击"证书门路"标签就会有下图的显示: ...

August 23, 2022 · 1 min · jiezi

关于ssl:SSL证书的分类有哪些如何选择SSL证书

 目前,SSL证书受到重视曾经不是一天两天的事件了,它对网站的重要性是不可漠视的,相似于驾驶证、护照和营业执照的电子正本,不仅能够确保网络传输数据平安,还能够进行身份验证,是网站向用户展现安全性的有效途径。那么如何抉择适合的SSL证书?SSL证书的分类有哪些?具体请看下文。 SSL证书的分类有哪些? 1、依照加密等级划分,能够分为DV、OV和EV证书三种 DV证书是最根本的证书类型,能起到加密传输性能,但无奈证实网站的真实性。 OV证书对申请者身份进行审核验证,能起到加密传输和身份验证双重成果。 EV证书是OV证书的增强版,和OV证书作用雷同。次要区别是装置EV证书的网站,除显示小锁标记外,局部浏览器还会显示绿色的公司名称和URL。 2、依照反对域名数量划分,能够分为单域名、多域名和通配符证书三种 单域名证书,只反对一个域名。 多域名证书,反对多个域名,包含多个主域名和一个主域名下的多个子域名。 通配符证书,只反对一个主域名下的多个子域名。 如何抉择适合的SSL证书? 1、证书级别 如果是集体网站或中小企业,DV证书就能够满足需要;如果是中大型企业,想取得更高安全级别,倡议抉择OV证书;如果是电商、媒体、金融、政府官网等对数据要求极其敏感的行业,倡议应用增强版的EV证书。 2、反对域名数量 如果只有一个网站,单域名证书就足够了;如果具备多个主域名,倡议购买多域名证书;如果公司具备多个业务,应用同一个主域名下的多个子域名,装置通配符证书更实惠。 3、证书品牌 无论国内外哪种证书,都能满足用户对数据加密的要求,可能不同品牌在加密算法上有所区别。参考链接:Single Name SSL vs SAN SSL vs Wildcard SSL

August 23, 2022 · 1 min · jiezi

关于ssl:详解-SSL三SSL-证书该如何选择

在上一篇《 详解 SSL(二):SSL 证书对网站的益处》中,咱们晓得了在网站部署 SSL 证书后,不论是对网站自身还是对网站的用户都可能带来许多益处。那么随着 HTTPS 的遍及,市面上也呈现了各种不同的 SSL 证书。并且因为 SSL 证书的多样性,很多人对于如何抉择 SSL 证书有着很大的困惑。因而,本篇文章将从证书安全级别、域名数量、用户类型这三个方面提供合理性倡议。首先,咱们来理解下 SSL 证书的类型。 目前市场上 SSL 证书的品种多样,SSL 证书能够依据以下三种形式进行分类:  证书品牌安全级别域名数量证书品牌SSL 证书是受浏览器信赖的 CA 机构验证网站信息后进行签发的,所以根据 CA 机构的不同 SSL 证书品牌也不同。目前国外比拟支流的 SSL 证书品牌有 GeoTrust、DigiCert、Globalsign、Let’s Encrypt 等,而国内比拟出名的是 CFCA 证书。 DigiCertDigiCert 作为寰球当先的数字证书提供商,为世界各地的客户提供优质的证书服务。是寰球泛滥顶尖公司值得信赖的合作伙伴,为新兴物联网市场提供值得信赖的 SSL 证书。 GeoTrustGeoTrust 是寰球第二大数字证书提供商,也是身份认证和信赖认证畛域的领导者, 该公司各种先进的技术使得任何大小的机构和公司都能平安、低成本的部署 SSL 数字证书和实现各种身份认证。 GlobalsignGlobalSign 是一家声誉卓著,备受信赖的 CA 核心和 SSL 数字证书提供商,在寰球总计颁发超过 2000 万张数字证书;其业余实力取得中国市场泛滥服务器、域名注册商、零碎服务供应商的青眼,成为其数字证书服务的合作伙伴。 安全级别SSL 证书的类型也因验证级别而异,CA 查看领有网站的集体或公司的合法性的水平。SSL 证书安全等级次要是受到 SSL 证书验证等级的影响,验证等级越高,那么安全等级也就越高。 根据证书安全级别,可分为:域名型、企业型和增强型三种,咱们日常也通常称之为 DV、OV、EV 证书。 域名型 (DV) SSL 证书DV 是最简略的 SSL 证书验证模式,仅实用于域名所有权验证。它通常通过电子邮件验证实现,不须要 CA 的任何进一步考察。这也是获取 SSL 证书最便宜、最快捷的形式。即证书颁布机构只对域名的所有者进行在线查看,通常是验证域名下某个指定文件的内容,或者验证与域名相干的某条 TXT 记录。 ...

August 22, 2022 · 2 min · jiezi

关于ssl:详解-SSL二SSL-证书对网站的好处

在现在谷歌、百度等互联网巨头强制性要求网站 HTTPS 化的状况下, 网站部署 SSL 证书未然成为互联网的发展趋势。而在上一篇《 详解 SSL(一):网址栏的小绿锁有什么意义?》中,咱们也晓得了 SSL  证书能够避免网络安全威逼。那么除此外为网站部署 SSL 证书还有哪些益处呢?最显著的一点,在咱们部署 SSL 证书后就能够直观看到。 部署 SSL 后网站出现模式当网站部署 SSL 证书后,浏览器中会显示一些显著的差别。有以下两点标志性因素: URL 显示“https://”SSL 加密的网站总是有额定的“s”。正如咱们上篇提到过的,它代表“平安”。如下图所示: 平安挂锁图标挂锁图标会显示在 URL 栏的左侧或右侧,它的具体位置取决于浏览器的类型。例如,在 Safari 和 Chrome 浏览器上,它位于左侧。 单击挂锁图标能够查看无关网站和证书公司提供的更多信息。当在一个网站的地址栏上看到这些标记时,能够置信该网站具备 SSL 证书是平安的。 SSL 证书的益处当然,部署 SSL 证书除了能给网站的地址栏加一把小绿锁以外,还会带来其余许多益处。咱们次要从以下两方面来深刻理解下。 针对网站自身针对网站用户咱们先来看下 SSL 证书针对网站自身而言带来的四点益处。 针对网站自身提供身份验证波及到网络安全,身份验证是必不可少的。而装置 SSL 证书,网站就必须通过身份验证过程。通过后由权威第三方认证机构为用户颁发的“网络身份证”,实现实体的物理身份与网络的虚构身份绑定,确保网站所有者在虚构网络世界的实在身份。 防备网络钓鱼钓鱼网站是由想要窃取用户信息的人创立的虚伪网站,创建者很难取得无效的 SSL 证书。当用户在网站上看不到安全标志时,他们更有可能在不输出任何信息的状况下来到。所以无效的 SSL 证书能够避免对访问者的网络钓鱼攻打。 避免流量劫持网络流动中,信息可能在传输过程被截获篡改后再转发,造成信息的不残缺,在产生或可能产生信息篡改、失落的状况时,网络服务提供者该当应用 SSL 证书对信息进行数字签名和完整性的爱护,实现数据在服务器存储、传输和解决的过程中免遭任何非传授的或非预期的批改、插入、删除、重发、损毁等毁坏。 提供数据加密电子政务和电子商务波及的秘密或敏感信息在网络传输中存在被监听泄露的可能,网络服务提供者该当对这些信息进行加密。应用 SSL 证书对秘密或敏感信息加密传输和保留,能够向访问者表明该网站上共享敏感信息是平安的,例如信用卡号、ID、电子邮件地址和明码。因而,SSL 增强了网站客户/访客之间的信赖。除这四点之外,SSL 证书针对网站用户带来的益处有三点。 针对网站用户进步网站 SEO 排名Google 在 2014 年公布的官网博客中指出,曾经调整其搜索引擎算法,采纳 HTTPS 加密的网站在搜寻后果中的排名将会更高。其指标非常简单,就是要激励寰球网站采纳平安度更高的 HTTPS 以保障访客平安。因而网站采纳 HTTPS 协定,可吸引更多的用户进行拜访,晋升网站的价值,增创营收。 ...

August 16, 2022 · 1 min · jiezi

关于ssl:HTTPS计算机网络SSL加密

1.服务端发送公钥给证书颁发机构申请证书。2.证书颁发机构通过本人的私钥对服务端公钥进行加密,并且通过服务端网址等信息生成一个证书签名,证书签名同样通过机构的私钥加密。证书制作实现后,机构把证书发送给了服务端当客户端向服务端申请通信时,服务端不再间接返回本人的公钥,而是把本人申请的证书返回客户端。3.客户端收到证书后,首先验证证书的真伪,之后取出服务端的公钥。4.客户端依照同样的签名规定,本人也生成一个证书签名,如果两个签名统一,阐明证书是无效的。5.验证胜利后,再次利用机构公钥,解密出服务端的公钥。 须要阐明的是:各大浏览器和操作系统曾经保护了所有权威证书机构的名称和公钥。因而在客户端本地就能够创立签名和解密。客户端拿到服务端的公钥后,再对本人的密钥进行加密后发送给服务端。最初服务端拿到加密后的公钥后,应用本人的私钥进行解密失去客户端的密钥接下来就能够应用密钥加密通信了

August 8, 2022 · 1 min · jiezi

关于ssl:详解-SSL一网址栏的小绿锁有什么意义

随着互联网的飞速发展,用户信息透露、数据泄露等平安问题的事件频繁产生。这所有不肯定是网站的问题,有时候可能是本人不经意间泄露了本人的信息。例如钓鱼网站就是日常生活中比拟常见的,钓鱼网站和实在网站差异轻微,它们个别会伪装成银行或其它网站诱导用户点击,窃取用户输出的银行账号、身份证、明码等私密信息。用户很难第一工夫分辨网站虚伪,稍不留心便会上当受骗。作为企业,部署 SSL 证书不仅能够帮忙用户辨认正确网站,更能确保网站数据的传输平安。那 SSL 证书到底如何爱护网站信息安全的呢? 什么是 SSL 证书在聊 SSL 证书之前,咱们先来理解下什么是 SSL 平安协定。 SSL 平安协定最后是由美国 Netscape 公司设计开发,在浏览器和 Web 服务器之间结构平安通道来进行数据传输,SSL 运行在 TCP/IP 层之上、应用层之下,采纳公开密钥技术。SSL 平安协定次要用来提供对用户和服务器的认证,确保数据在传送中不被更改,保证数据的完整性。 而 SSL 证书就是恪守 SSL 协定,由受信赖的数字证书颁发机构 CA 在验证服务器身份后颁发的一种数字证书。SSL 证书里蕴含网站的域名、证书有效期、证书的颁发机构以及用于加密传输明码的公钥等信息。 SSL 证书的加密形式是基于公共密钥基础设施(PKI)与公钥的加密。此办法蕴含两个不同的加密密钥:私钥和公钥,公钥用于加密,私钥则用于解密。 每个用户本人设定一把特定的仅为自己所知的公有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由自己公开,为一组用户所共享,用于加密和验证签名。当发送一份窃密文件时,发送方应用接管方的公钥对数据加密,而接管方则应用本人的私钥解密,这样信息就能够平安无误地达到目的地了。 简略来说,它能够让服务器和客户端在传输利用数据之前,协商加密算法和加密密钥,客户端提出本人可能反对的全副加密算法,服务器抉择最适宜它的算法。 部署 SSL 证书当网站部署 SSL 平安证书后,浏览器会敞开不平安提醒,认定网站平安。同时会显示小锁标记且点击小锁会有证书的相干信息,能让用户辨认网站的平安度,缩小钓鱼网站截流。此外,网站部署 SSL 证书还有很多的其余劣势。例如:优化网站搜索引擎排名、晋升网站形象,晋升客户信任度等。 由此能够看出,SSL 证书在网络安全中扮演着及其重要的角色,给网站部署 SSL 证书也成为大势所趋。同时给网站部署 SSL 证书的操作步骤非常简单,只需以下三步即可实现: 申请 SSL 证书自主部署 SSL 证书将网站降级为 HTTPS又拍云 SSL 证书服务与国内顶级的 CA 机构单干,为用户提供一站式 HTTPS 平安解决方案。用户能够间接在又拍云申购各类 SSL 证书(包含两款收费证书),申请时只需提交域名,填写必要信息,即可实现证书的申购。△ Let's Encrypt 证书申购流程示例 在又拍云申购证书无需繁冗流程,可自主实现证书部署,轻松实现网站与 Web 利用的 HTTPS 加密部署,疾速为企业网络安全保驾护航。 ...

August 5, 2022 · 1 min · jiezi

关于ssl:SSLTLS协议信息泄露漏洞

问题形容:漏扫时会常常遇到这类问题 - SSL/TLS协定信息泄露破绽(CVE-2016-2183)【原理扫描】如下图:其次要起因就是设施应用了不平安的加密协议和加密套件,解决的办法就是把不平安的加密和协定禁用掉就能够了。解决办法: 下载工具 Windows 和 WinServer 都能够通过软件“IIS Crypto GUI”来设置加密协议和所反对的加密套件,下载地址:点击间接下载 IIS Crypto GUI应用工具 间接点击 Best Practices 应用举荐设置,而后点击 Apply 利用,而后重启设施失效。如下图:参考文档:限度某些加密算法和协定

July 26, 2022 · 1 min · jiezi

关于ssl:警惕SSL证书过期后果挺严重

SSL证书过期结果很重大? 对于咱们沃通的客户咱们个别会要求他们注册咱们官网的账户,以便咱们帮忙客户进行证书业务管理,免得到了认证日期没有续费导致证书过期。这时又有许多客户会问:证书过期会怎么样?很重大吗? 至于这个问题,我的了解是,如果网友他们刚好通过或者专门拜访你的网站,进去之后发现是一个过了期的认证网站,那种感觉就像到了一座坟墓前令人感到惊悚,他们兴许不违心再进入你的网站…… 这么形容是否夸大了些?我为大家剖析一下吧 SSL证书过期后会怎么? 咱们都晓得,SSL证书有助于对传输中的数据进行加密。通过在网站的服务器上安装SSL证书,通过HTTPS托管该证书,并在网站与其访问者之间创立平安的加密连贯。这样既能够保障沟通,SSL还能对服务器进行身份验证。 但SSL证书并不是永恒无效的。在往年九月份之前,寰球SSL证书的最长有效期是27个月,而在往年的9月1日后,SSL证书的最长有效期被限度在398天以内。也就是说,当初起每个装置了SSL证书的网站须要每年更新或者替换SSL证书一次,不然将会过期,变为有效证书。 证书有效又会怎么?当用户浏览你的网站时,浏览器会在毫秒内查看SSL证书的有效性(这是SSL握手的过程)。如果证书已过期,则会收回如下正告: 试想,如果是你拜访到这样一个网站看到这么多的警示,你还敢再勾留或者再持续拜访吗? 为什么SSL证书会过期? 首先,SSL证书的最大作用是:加密和身份验证。而后者正是关系到SSL证书有效期限的最次要起因。 所有SSL证书都须要对网站的某些内容进行身份验证,甚至域验证证书也会对服务器进行身份验证。与任何模式的身份验证一样,咱们在肯定的工夫内须要从新验证所应用的信息,以确保其准确性。 在互联网上尤其如此,虚构的网络世界变幻莫测,网站易手、公司被交易,SSL / TLS基于可被其毁坏的信赖模型。因而,对于颁发受信赖证书的证书颁发机构(CA)来说,重要的是要确保客户用于认证服务器和组织的信息是最新和精确的。 也因而,SSL证书的有效期从最早的十年、五年、再到三年、两年,到往年目前改为一年。 但身份验证并不是证书有效期缩短的惟一起因。从久远来看,较短的证书有效期也使证书的技术开发随时进行无效更改。例如,几年前,SSL / TLS行业已弃用SHA-1作为hash算法,但在这之前你购买的是具备3年的有效期的以SHA-1作为hash算法的SSL证书,在这种状况下,你就得必须期待最初期限后的39个月,能力更换最新算法的证书,确保网站的失常平安应用。 在三大浏览器(Apple Safari、 Google Chrome、Mozilla Firefox)的推动下,SSL/TLS证书最长有效期变更为13个月,同时,寰球各大证书权威签发机构曾经进行签发有效期超过1年(398天)的SSL证书。 如何防止SSL证书过期? 许多的企业在证书治理方面存在一系列不同的问题。中小企业(SMB)可能只有一个或少数几个证书,而大型企业公司的网络比拟宏大,连贯的设施泛滥,覆盖面广,SSL证书安排宽泛。无论是中小型或者大型公司,可能因为治理不标准、不足专业性等起因,会造成肯定的疏漏。 自动化治理 无论是企业或者集体网站,任何级别防止这些问题的最佳办法就是自动化,抉择业余的自动化数字证书治理服务平台。该技术次要通过ACME协定来实现。IETF将ACME协定作为规范,ACME 协定通过在给定 Web 服务器上安装证书治理代理来运行。组织或域名在一开始就须要通过验证,证书治理代理帮助域名操作验证,一旦实现,代理能够申请,续订和撤销证书。证书治理代理能够自动化,以固定的工夫期限与 CA 签约,更换或连续证书和密钥。这些都不须要人为干涉。 非自动化治理 首先要找一个业余靠谱的CA或者SSL服务单位,他们会有健全的证书治理平台和良好的服务意识,只有你的联系方式正确地记录在相干零碎,他们就会在证书到期前的90天、30天进行揭示,能够帮忙企业在整个基础架构中查看和治理数字证书。 企业有网络管理人员的人事变动,须要随时与SSL证书服务单位进行分割确认该管理人员的通信形式更改状况,以便日后进行无效分割。另外,确保定期登录证书购买零碎页面,以便在行将进行续订时能够随时失去告诉。 确定有效期限,以随着到期日期的邻近而逐渐晋升揭示。 遗记续订或替换行将到期的SSL证书对任何人都可能产生。然而,有很多操作能够帮忙你将这样的危险降至最低。要么抉择自动化,要么就须要具备可见性和良好的沟通渠道,以便你能够提前解决SSL到期和续费的问题。参考链接:https://sslhow.com/check-tls-...

June 28, 2022 · 1 min · jiezi

关于ssl:SSL证书格式PEMCERJKSPKCS12

一、支流的SSL证书格局依据不同的服务器以及服务器的版本,咱们须要用到不同的证书格局,就市面上支流的服务器来说,大略有以下格局: DER、CER,文件是二进制格局,只保留证书,不保留私钥。PEM,个别是文本格式,可保留证书,可保留私钥。CRT,能够是二进制格局,能够是文本格式,与 DER 格局雷同,不保留私钥。PFX P12,二进制格局,同时蕴含证书和私钥,个别有密码保护。JKS,二进制格局,同时蕴含证书和私钥,个别有密码保护。二、各服务器平台应用的证书格局Nginx:pemApache:pemIIS:pfx/pkcs12Tomcat:jks三、各证书格局详解3.1、DER该格局是二进制文件内容,Java 和 Windows 服务器偏差于应用这种编码格局。 OpenSSL 查看 openssl x509 -in certificate.der -inform der -text -noout转换为 PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem3.2、PEMPrivacy Enhanced Mail,个别为文本格式,以 -----BEGIN... 结尾,以 -----END... 结尾。两头的内容是 BASE64 编码。这种格局能够保留证书和私钥,有时咱们也把PEM 格局的私钥的后缀改为 .key 以区别证书与私钥。具体你能够看文件的内容。 这种格局罕用于 Apache 和 Nginx 服务器。 OpenSSL 查看: openssl x509 -in certificate.pem -text -noout转换为 DER openssl x509 -in cert.crt -outform der -out cert.der3.3、CRTCertificate 的简称,有可能是 PEM 编码格局,也有可能是 DER 编码格局。如何查看请参考前两种格局。 3.4、PFXPredecessor of PKCS#12,这种格局是二进制格局,且证书和私钥存在一个 PFX 文件中。个别用于 Windows 上的 IIS 服务器。改格局的文件个别会有一个明码用于保障私钥的平安。 ...

June 28, 2022 · 1 min · jiezi

关于ssl:泛域名ssl证书是什么申请泛域名ssl证书有什么好处

大家都晓得当初做网站须要部署SSL证书,因为:谷歌火狐等支流浏览器开始提醒没有SSL证书的网站“不平安”;百度谷歌等搜索引擎公开申明领有SSL证书的网站具备更好的排名权重;苹果、微软等一些平台要求网站具备SSL证书;数据传输须要https加密传输;基于这些起因,SSL证书的需要变得很大了,简直网站上线,包含子网站等,都须要第一工夫部署SSL证书。为了管制好SSL证书的应用老本,很多企业开始抉择通配符泛域名版SSL证书。依据SSL证书供应商统计,SSL证书用户中申请通配符泛域名版SSL证书的比例曾经超过50%了。 什么是通配符泛域名SSL证书?泛域名SSL证书又叫通配符证书,申请这样的证书能够爱护一个域名及该域名下的所有二级、三级子域名。 这样域名有证书加密传输的平安链接,也就造成了https加密链接模式,岂但平安而且还不限度子域名的数量。 个别状况企业因为业务需要,会解析很多子域名,如果是这样对于有很多域名的企业来说,进行部署SSL证书也是一项十分盛大的工作。不仅在费用上投入很大,在工夫精力上也是一笔不小投入。然而为了实现https又不得不进行SSL证书部署,这时用到泛域名SSL证书是十分适合的。 泛域名ssl证书有什么益处?个别状况下增加所有的子域名须要配置证书时就不要走审核流程,放慢配置子域名的速度,节省时间。 同样因为不限度数量的起因,也就节俭很大一笔额定的费用,如果客户的网站有很多的子域名,那么应用这样的SSL证书是非常适合的。 每一种SSL证书都有验证等级,泛域名也不例外。泛域名证书有三种验证等级品种,分为域名型证书、企业型证书、增强型证书。 因为泛域名SSL证书的个性,域名验证和企业验证这俩品种验证类型在泛域名SSL证书里常常应用。是泛域名里存在性比拟高的验证证书。而加强验证型的泛域名证书在企业里就不常常应用了。因为它须要对每个应用ssl证书的域名进行独立验证,所以使用率很低。 所谓的通配符泛域名版SSL证书是指用一张证书爱护一个域名及这个域名所有的下一级的子域名,而且不限度这一级的子域名的个数。 通配符配符 SSL 又叫泛域名证书,英文名称为:Wildcard Certificates。能够爱护一个域名以及该域名所有的二级或者三级子域名,不限度子域名数量,且增加新的子域名毋庸从新审核和另外付费,节约了大量的工夫和金钱老本。例如,一个独自的通配符证书就能够爱护 www.example.com、blog.example.com 和 store.example.com。通配符证书能够爱护通用域名和您在提交申请时指定的级别下的所有子域。只需在通用域名左侧的子域区域增加星号 (*) 即可。参考链接:https://sslhow.com/create-ssl...

June 28, 2022 · 1 min · jiezi

关于ssl:SSL证书格式PEMCERJKSPKCS12

一、支流的SSL证书格局依据不同的服务器以及服务器的版本,咱们须要用到不同的证书格局,就市面上支流的服务器来说,大略有以下格局: DER、CER,文件是二进制格局,只保留证书,不保留私钥。PEM,个别是文本格式,可保留证书,可保留私钥。CRT,能够是二进制格局,能够是文本格式,与 DER 格局雷同,不保留私钥。PFX P12,二进制格局,同时蕴含证书和私钥,个别有密码保护。JKS,二进制格局,同时蕴含证书和私钥,个别有密码保护。二、各服务器平台应用的证书格局Nginx:pemApache:pemIIS:pfx/pkcs12Tomcat:jks三、各证书格局详解3.1、DER该格局是二进制文件内容,Java 和 Windows 服务器偏差于应用这种编码格局。 OpenSSL 查看 openssl x509 -in certificate.der -inform der -text -noout转换为 PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem3.2、PEMPrivacy Enhanced Mail,个别为文本格式,以 -----BEGIN... 结尾,以 -----END... 结尾。两头的内容是 BASE64 编码。这种格局能够保留证书和私钥,有时咱们也把PEM 格局的私钥的后缀改为 .key 以区别证书与私钥。具体你能够看文件的内容。 这种格局罕用于 Apache 和 Nginx 服务器。 OpenSSL 查看: openssl x509 -in certificate.pem -text -noout转换为 DER openssl x509 -in cert.crt -outform der -out cert.der3.3、CRTCertificate 的简称,有可能是 PEM 编码格局,也有可能是 DER 编码格局。如何查看请参考前两种格局。 3.4、PFXPredecessor of PKCS#12,这种格局是二进制格局,且证书和私钥存在一个 PFX 文件中。个别用于 Windows 上的 IIS 服务器。改格局的文件个别会有一个明码用于保障私钥的平安。 ...

June 28, 2022 · 1 min · jiezi

关于ssl:OpenSSL加解密使用

本章解说下openssl相干概念和加解密算法的根本应用 这篇文章讲述以下几点 什么是OpenSSL基本功能密钥、证书的编码格局和后缀名对称加密的根本应用生成公私钥对非对称加密的根本应用 什么是OpenSSLOpenSSL 是一个安全套接字层明码库,囊括次要的明码算法、罕用的密钥和证书封装治理性能及SSL协定,并提供丰盛的应用程序供测试或其它目标应用。基本功能openssl是一个开源程序的套件、这个套件有三个局部组成:一是libcryto,这是一个具备通用性能的加密库,外面实现了泛滥的加密库;二是libssl,这个是实现ssl机制的,它是用于实现TLS/SSL的性能;三是openssl,是个多功能命令行工具,它能够实现加密解密,甚至还能够当CA来用,能够让你创立证书、撤消证书。为了做个更简略的辨别,我分成上面3种,可能你看着会亲切一些 加解密库(本章只探讨加解密)SSL协定实现一些通过封装,不便你应用加解密和SSL的工具**密钥、证书的编码格局和后缀名目前有以下两种编码格局. PEM - Privacy Enhanced Mail关上看文本格式,以"-----BEGIN-----"结尾, "-----END-----"结尾,内容是Base64编码,查看PEM格局的信息能够用命令openssl rsa -in my.pem -text -nooutUnix服务器偏差于应用这种编码格局.DER - Distinguished Encoding Rules关上看是二进制格局,不可读,查看DER格局的信息能够用命令openssl rsa -in my.der -inform der -text -nooutJava和Windows服务器偏差于应用这种编码格局.咱们平时见到的多种后缀名,都是语义化的后缀,在生成密钥的时候,比方咱们私钥的后缀名能够写.pem .key,都是能够的,以下几种为罕用后缀 CRT - CRT应该是certificate的三个字母,其实还是证书的意思,常见于Unix零碎,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码,置信你曾经晓得怎么分别. CER - 还是certificate,还是证书,常见于Windows零碎,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码. KEY - 通常用来寄存一个公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER.查看KEY的方法:openssl rsa -in mykey.key -text -noout如果是DER格局的话,同理应该这样了:openssl rsa -in mykey.key -text -noout -inform der CSR - Certificate Signing Request,即证书签名申请,这个并不是证书,而是向权威证书颁发机构取得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要本人保存好,查看的方法:openssl req -noout -text -in my.csr(如果是DER格局的话依旧加上-inform der,这里不写了) 罕用加解密算法应用咱们重点探讨如何应用1.对称加密 咱们须要用到 openssl enc 命令,先看下帮忙文档 $ openssl enc -h ...

June 28, 2022 · 4 min · jiezi

关于ssl:分布式-如何与-DBLE-进行秘密通话

作者:蔡玮 中间件dble测试成员,次要负责dble的日常测试工作,热衷于摸索发现,学习新技术。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 SSL协定简介家喻户晓,如果咱们在网络上传输数据时信息都是应用明文的话,会很容易呈现数据被监听和窃取的状况,从而造成肯定的安全性的问题,这对于一些集体敏感信息乃至公司的数据安全无疑造成了很大的危险。 基于此,势必有肯定的需要,对网络上传输的数据进行“包裹化”解决,而SSL即在此背景之下应运而生。Netscape公司于1996年提出了平安协定SSL,其是工作于应用层和传输层之间的一款协定,设计即全面,其波及的概念泛滥,不仅仅“包裹化”数据【数据加密】,更是提供了身份验证和音讯完整性验证机制,为网络数据传输安全性建设做出了巨大贡献,从而十分大程度上改善了互联网的安全性问题。 对于数据库层面,加密通信同样显得很重要,毕竟任何业务的数据存储最终都要落实到数据库上,其重要性显而易见。所以对于MySQL而言,SSL曾经是一个成熟的性能并广泛应用。对于协定实现原理以及加密算法不再是本文介绍的重点,在此就不再赘述,可参考历史公众号文章:MySQL : SSL 连贯浅析 SSL 之 DBLE 篇概述作为一款数据库中间件产品,在应用 DBLE 时,将 MySQL 挂载到 DBLE 后端后,齐全能够脱离 MySQL 而与 DBLE 进行间接建设连贯。那么问题来了,如何确保与 DBLE 进行通信时数据的安全性呢?显然,在这方面 DBLE 须要向 MySQL 学习,应用 SSL 武装本人,以确保通信时用户数据的安全性。 在行将要发版的 DBLE 版本中,咱们将会反对 SSL 加密连贯,须要留神的是目前加密解决是处于 Client — DBLE 通信阶段,DBLE — MySQL 通信阶段暂未波及。同时在曾经发版的 DBLE 3.22.01.1 的小版本中也已率先反对了 SSL ,感兴趣的同学能够下载相干的版本进行试用。 应用阐明对于 DBLE 的 SSL 连贯配置和 MySQL 有肯定的相似性,然而并不尽相同,上面就 DBLE 对于 SSL 加密的应用进行简要的配置应用介绍。 相熟 SSL 的同学应该晓得,应用 SSL 的前提必然是各种证书【波及各种密钥信息】,DBLE 也并不例外。MySQL 中应用的是自签名证书,自签名证书是由不受信的CA机构颁发的数字证书,也就是本人签发的证书。与受信赖的CA签发的传统数字证书不同,自签名证书是由一些公司或软件开发商创立、颁发和签名的。DBLE 同样采纳和 MySQL 一样的形式:应用自签名证书形式制作 SSL 证书。 ...

June 23, 2022 · 3 min · jiezi

关于ssl:simplehttpsserver

# taken from https://gist.github.com/DannyHinshaw/a3ac5991d66a2fe6d97a569c6cdac534# which taken from http://www.piware.de/2011/01/creating-an-https-server-in-python/# generate server.pem with the following command:# openssl req -new -x509 -keyout key.pem -out server.pem -days 365 -nodesimport http.serverimport sslimport sysprint("usage: <simple-https-server> <port> <cert pem file> <key pem file>")port, certfile, keyfile = sys.argv[1:]server_address = ('0.0.0.0', int(port))httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile=certfile, keyfile=keyfile, ssl_version=ssl.PROTOCOL_TLS)httpd.serve_forever()

April 24, 2022 · 1 min · jiezi

关于ssl:国产SSL证书与国密SSL证书有何不同

国产SSL证书就是国内CA签发的SSL证书,这种类型证书有反对国内算法,如RSA算法和ECC算法,也有反对SM2,SM3, SM4等国产明码算法的。 国密SSL证书是遵循国家标准技术规范,采纳国密算法的,如SM2等算法的SSL证书。 所以,国产SSL证书与国密SSL证书是一个蕴含与被蕴含的关系。 国密SSL证书在工作原理上和RSA算法的SSL证书是一样的,次要区别在于采纳不同的明码算法体系。下图能够分明理解他们之间的相同点与不同点。 不论是国产SSL证书还是国密SSL证书,在数据加密和身份认证等方面都能起到很好的作用,能够避免网站被钓鱼和混充,也能够对网站的数据进行加密,避免信息泄露。锐成信息倡议企业单位联合具体业务需要及我国合规要求,抉择适宜本人的HTTPS加密解决方案。

April 2, 2022 · 1 min · jiezi

关于ssl:Gworg与CFCA达成合作伙伴关系

近日,光网(Gworg)与中国金融认证核心(CFCA)正式达成合作伙伴关系。Gworg将为中国大陆用户提供CFCA国产SSL证书,助力推动国产自主研发SSL证书倒退,让中国数字证书在世界领有话语权,逐步脱离外国SSL证书品牌依赖关系,造成中国网络安全的新倒退、新屏障。Gworg始终反对国产品牌SSL证书,也提供相干更多畛域的平安技术支持,此次单干Gworg将充沛的必定了国产SSL证书领有较高的认可率,无论在中国大陆还是世界都具备竞争劣势。 Gworg与CFCA达成合作伙伴 次要单干产品SSL证书企业级OV、企业级EV、单域名、多域名、通配符SSL证书。 CFCA介绍CFCA是国产SSL证书,也是目前中国大陆备支流浏览器信赖的自主产权的SSL证书厂家,是由中国人民银行于1998年牵头组建,经国家信息安全管理机构批准成立的权威电子认证机构。在中国人民银行和中国银联的领导下,历经20余年积淀,CFCA已倒退成为以网络安全综合服务为外围的科技企业。 Gworg介绍Gworg是Colume的子公司隶属于江苏光网网络科技有限公司利用于互联网安全畛域的品牌。二十多年来,Gworg深受寰球企业的信赖,为各种规模的企业提供数字身份解决方案,爱护其员工、客户、知识产权和整体品牌免受在线威逼。作为在寰球领有超过1亿个SSL证书的商业证书颁发机构,Gworg领有帮忙公司爱护数字交易和减少在线信赖的教训和专业知识。Gworg专一于互联网传输畛域的可信和平安。 此次Gworg和CFCA单干联手推动国产SSL证书倒退迈上新台阶。

March 29, 2022 · 1 min · jiezi

关于ssl:技术分享-MySQL-SSL-连接浅析

作者:胡呈清 爱可生 DBA 团队成员,善于故障剖析、性能优化,集体博客:https://www.jianshu.com/u/a95...,欢送探讨。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 TLS or SSL ?SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协定加密层,最后是由网景公司(Netscape)研发,后被 IETF(The Internet Engineering Task Force - 互联网工程工作组)标准化后写入(RFCRequest For Comments 申请正文),RFC 里蕴含了很多互联网技术的标准。 起初是因为HTTP在传输数据时应用的是明文(尽管说 POST 提交的数据时放在报体里看不到的,然而还是能够通过抓包工具窃取到)是不平安的,为了解决这一隐患网景公司推出了SSL安全套接字协定层,SSL 是基于 HTTP 之下 TCP 之上的一个协定层,基于 HTTP 规范并对 TCP 传输数据时进行加密,所以 HTTPS 是 HTTP+SSL/TCP的简称。 因为 HTTPS 的推出受到了很多人的欢送,在 SSL 更新到 3.0 时,IETF 对 SSL3.0 进行了标准化,并增加了多数机制(然而简直和 SSL3.0无差别),标准化后的 IETF 更名为 TLS1.0(Transport Layer Security 平安传输层协定),能够说 TLS 就是 SSL 的新版本 3.1 。 TLS(Transport Layer Security)是更为平安的升级版 SSL。但 SSL 这一术语更为罕用,实际上 MySQL 应用的就是 TLS 协定,而不是 SSL 协定。 ...

March 9, 2022 · 3 min · jiezi

关于ssl:为IP地址签发SSL证书

咱们理解一下IP地址有了SSL证书浏览器关上IP地址是什么样子的。你能够看到IP地址在HTTPS状况下被浏览器信赖,全站代码HTTPS状况下地址栏会显示可信绿色标识,当然这种成果取决于不同的浏览器厂家。 申请IP证书办法: 只需将IP地址提交给Gworg后而后认证后就能够拿到IP证书了,这个证书会包含各种的服务器环境类型证书,所以无需放心,能够间接应用,依据目前Gworg颁发的SSL证书最长1年(行业规定)。 IP地址SSL证书有两种类型: 1、DV类型的IP证书,这种签发速度快,无论是集体还是企业都能够进行申请。 2、OV类型的IP证书,只能单位申请,须要进行实名认证,签发须要1-2个工作日左右。区别与DV证书详情会显示实名信息,这相当于晓得这个网站的发布者信息。

March 2, 2022 · 1 min · jiezi

关于ssl:手把手教你白嫖一年免费通配符泛域名SSL证书

如想获得最佳浏览体验,请拜访:手把手教你白嫖一年收费通配符泛域名SSL证书! (前排提醒:想白嫖OV,EV SSL 的敌人们还是放弃吧,目前不存在此类服务) 家喻户晓,SSL现已成为各种网站必不可少的配置了,然而支流的Let's Encrypt(https://letsencrypt.org/),ZeroSSL(https://zerossl.com/)等只能提供90天的收费SSL,而阿里云,华为云提供的每年20张一年期收费 Encryption Everywhere DV SSL证书以及腾讯云,UCloud等提供的每年20张一年期收费 亚洲诚信 DV SSL证书,均不反对通配符。 显然对于领有超多二级子域名的网站来说,独自为每一个子域名申请一个证书是简单且反复的操作,想我这种懒人是肯定不会去一个一个申请的。然而当咱们查问便宜通配符SSL证书价格时... 最低都在50美刀左右(参考:Cheap Wildcard SSL)当然,既然这篇文章能写进去,那么这个问题肯定有他的解决方案(?)而这也就是 AlphaSSL 出场的中央(硬核Chinglish)。 AlphaSSL啥是 AlphaSSL? AlphaSSL 是驰名数字证书认证机构和SSL证书签发商 GlobalSign 旗下的证书品牌。(至于 GlobalSign 有多驰名... 简略说 Google,Baidu 等网站应用的都是其颁发的SSL证书)而在 AlphaSSL 官方网站 上,其通配符证书售价达到了150美刀(约合人民币951元)!!!! 白嫖原理既然 AlphaSSL 证书也是天价(但比其余便宜超多),那么咱们该如何白嫖呢?这是,让咱们有请另一个狠角色:INAP(原 SingleHop) INAP,LLC是位于美国伊利诺伊州芝加哥市的美国IT托管公司和服务提供商。该公司在芝加哥,亚利桑那州和荷兰设有数据中心。 简略来说就是一个买VPS的公司,和其余VPS提供商一样,INAP也为其用户提供收费SSL证书,然而相比其余商家提供的Let's Encrypt,INAP提供的是一年收费通配符泛域名DV SSL证书,由AlphaSSL签发。 遗憾的是,INAP并不开放注册(仅对大客户凋谢),而其VPS价格也非常惊人(且不公开),但仍有不少领有账号的好心人违心凋谢其账号的API让大家来注册SSL,这也就是咱们可能白嫖 AlphaSSL 证书的起因。 白嫖教程本版块分为两局部:完全免费白嫖和极低成本白嫖。 完全免费白嫖返回 https://ssl.ni-co.moe/ssl/cre... 间接申请即可(已齐全生效) 返回 https://en.assl.space/ 间接申请即可(已齐全生效) 返回 http://ww38.assl.loovit.net/ 间接申请即可(已齐全生效) 极低成本白嫖该办法基于 萌咖 提供的API。 1.生成 CSR(反对 EC key) 如果你曾经很相熟这一步了,那么间接生成就好,如果不晓得这是个啥,能够返回 在线生成 输出域名(一本站域名为例)必须加上 *. 才能够申请到泛域名证书。 CSR Value 里的内容即为咱们一会要用到的CSR,留神,下方 Certificate Private Key 的内容也须要保留,前面会用到。 ...

February 25, 2022 · 1 min · jiezi

关于ssl:2021年Sectigo数字证书企业解决方案增长超20

2022年1月13日,专一于数字证书和自动化证书生命周期治理(CLM)畛域的寰球领导者——Sectigo发表,2021年的销售额增长创下历史新高,其中寰球企业销售额增长超20%,全新一级标识大幅减少;此外,产品翻新、行业奖项和强劲的市场需求也独特推动公司超额完成了增长指标。 "咱们很快乐看到2021年突出的问题,对Sectigo来说,这是要害的一年,因为咱们突破了行业惯例,帮忙咱们的客户解决事实世界的挑战,无论其起源何处,咱们为每个数字身份建设起了信赖。" Sectigo首席执行官Bill Holtz说道,"咱们将身份平安放在首位,联合SiteLock产品和领导团队扩大等先进办法使Sectigo在竞争对手中处于领先地位,并失去了客户、合作伙伴和市场的认可。” 成绩斐然寰球企业销售额增长超过20%2021年,随着越来越多的企业抉择应用Sectigo来爱护和治理其日益增长的员工及设施的数字身份认证,Sectigo的企业销售额增长了20%以上,市场需求量创下新高。 中国区年销售额体现强劲,增长超300%据Sectigo中国区惟一策略合作伙伴上海锐成信息科技有限公司走漏,2021年中,仅Sectigo数字证书的年销售额较去年同比增长超过300%,这得益于越来越多的国内企业对Sectigo的高度认可以及锐成信息的业余技术服务! David Mahdi退出Sectigo团队前Gartner(第一家信息技术钻研与剖析公司)副总裁、身份密码学和网络安全学钻研专家David Mahdi于2021年12月退出Sectigo,负责首席策略官和CISO(首席信息安全官)参谋。 收买SiteLock和PatchmanSectigo在2021年5月收买了当先的网站平安爱护和监测供应商——SiteLock。这项交易还包含Patchman,一家位于荷兰的主动内容管理系统(CMS)破绽扫描和补丁解决方案供应商。此次收买加强了Sectigo的产品业务能力、也扩充了其合作伙伴范畴及影响力,目前受SiteLock爱护的网站已超过1600万个,Sectigo也由此确立了在网络安全畛域的市场领先地位。 Root Causes 播客冲破50,000名听众由Sectigo首席合规官Tim Callan和首席技术官Jason Soroko每周主持的五星级播客节目Root Causes冲破50,000名听众。作为一个值得信赖获取常识的渠道,Sectigo旨在促使IT专业人士理解行业趋势和最佳实际。 产品翻新Sectigo成为治理多个CA证书的通用平台Sectigo旗舰产品Sectigo Certificate Manager (SCM)的欠缺使其成为一个通用平台,可能治理来自其余当先CA机构的公共及公有证书。客户能够通过SCM零碎的地方门户治理由Sectigo或其余CA签发的数字证书和身份认证。微软CA是第一个增加到Sectigo高级CLM(证书生命周期治理)平台的大型第三方CA机构。 产品翻新解决新兴用例更多产品的翻新打算将于今年年初公布,其中包含无明码身份认证、RPA(机器人流程自动化)身份编排、文档签名证书的近程身份验证以及高级自动化性能。 行业认可入选《软件报告》评比的2021寰球25大网络安全公司Sectigo因其在CLM畛域的主导地位而入选《软件报告》2021年25大网络安全公司之一。Sectigo的CEO Holtz被《软件报告》评为2021年25大网络安全执行官之一。 2021年网络安全冲破奖当先的市场情报公司Tech Breakthrough 在2021年网络安全冲破奖中将Sectigo评为年度整体加密解决方案优质供应商。 2021年网络安全寰球卓越奖Sectigo网络安全平台被评为2021年度新平安软件产品服务金奖。 Sectigo的Soroko被评为第17届年度网络安全寰球卓越奖中的年度CTO铜奖。 平安合作伙伴打算获五星级评级Sectigo平安合作伙伴打算在2021年CRN合作伙伴打算指南中取得五星评级,该奖项授予提供最佳解决方案的独家公司,这些公司在其合作伙伴打算中的体现超出了预期。 "这是一个激动人心的时刻,Sectigo的团队、解决方案和指标市场都在快速增长,而且它重视互操作性和开放性,"Sectigo的Mahdi说。"咱们的首要任务是帮忙咱们的客户爱护他们的组织抵挡当今日益简单的威逼,而这要从升高IT基础设施的复杂性开始,在所有身份治理解决方案中实现协调和自动化,从而建设一个松软的数字信赖根底。这就是Sectigo正在为其客户提供的服务,在新的一年里,咱们将持续引领潮流,确保2022年将有一个平安的数字化将来。”

February 17, 2022 · 1 min · jiezi

关于ssl:SSL卸载是什么它的工作原理是什么有什么好处

在学习SSL卸载之前,咱们应该理解一些基本知识。 一.SSL提早互联网迅猛发展的背地暗藏着许多安全隐患,对此,各种加密技术应运而生。SSL(Secure Socket Layer安全套接层)协定便是一种广泛应用于保障互联网交易平安的加密通信协定。在SSL加密通道内对HTTP进行封装,成为HTTPS,大大提高了数据传输过程中的信息安全性。现在,大量的线上交易业务,如电子商务、股票、证券交易等都采纳SSL加密技术来保障敏感数据传输的安全性。 然而,随着SSL通信量规模的日益宏大,其弊病也日益浮现,其首要便是SSL提早。在HTTPS中,实现TCP握手协定后还需实现SSL握手,因而,HTTPS比HTTP耗时;同时,握手之后,服务器须应用额定的解决能力来对传输的数据进行加密和解密,于是SSL的联机加密运算不可避免会耗费服务器的解决性能,直观地说,一台服务器启用SSL加密之后,其性能往往只达到原来的20%,其余80%的计算性能都耗费在了SSL的加密运算方面。只管TLS1.3(SSL协定的标准化版本)的公布使得零碎在进行握手时只需进行一次往返,缩小了耗时,并在其余方面进一步提高了性能,但在更高流量的状况下,SSL/TLS仍旧可能会减少提早。 二.SSL卸载SSL卸载技术解决了上述问题:通过将HTTPS利用拜访过程中的SSL加密解密过程转移到特定的集成电路(ASIC)处理器上,在满足高并发拜访需要的同时,为程序或网站开释出解决能力,从而缩小服务器端的性能压力,最终晋升客户端的拜访响应速度。 这一过程有时也称为负载平衡。 但因为SSL对应用层数据进行了加密,使得负载均衡器这样的设施无奈提取用户会话中的cookies、URL、门路等信息。因而,通过SSL卸载技术,一方面全面卸除了零碎负荷,另一方面也将SSL加密后的数据融入处理器。 三.SSL卸载的工作原理1.SSL终结应用SSL卸载性能的利用交付设施充当负载均衡器的角色。 将专用的SSL利用交付设施(采纳专用的SSL卸载硬件芯片)置于网络服务器的前端,把所有传入的客户端申请疏导到服务器,在服务器之间均衡或调配客户端的负载,使客户端只须要和SSL利用交付设施交互即可。这样,任何服务器的承载能力都不会过载;同时,客户端发动的HTTPS连贯,通过SSL利用交付设施解决后,变成明文的HTTP数据,即可被WEB服务程序(例如IIS、APACHE)间接读取,无需非凡的驱动程序来传送和承受网络数据,从而进步服务器性能。 这一过程中,当客户端尝试连贯到网站时,首先会连贯到SSL利用交付设施——该连贯是HTTPS;而交付设施和应用服务器之间的连贯是HTTP。其中,SSL利用交付设施充当了SSL终结器的角色,因而这一过程又称为SSL终结。 上面是SSL终结的可视化图: 2. SSL桥接除了通过HTTP发送流量和申请外,SSL桥接在概念上与SSL终结十分类似,它会在将所有内容发送到应用程序服务器之前,进行从新加密。 上面是SSL桥接的可视化图: 四.SSL卸载的益处1.进步服务器性能:通过卸载应用服务器上额定的SSL加密解密工作,使服务器专一于它们的次要性能,升高服务器负荷。 2.升高管理员操作复杂性:无需治理和配置多个服务器的证书,只须要在前端交付设施上实现即可。 3.依据应用的SSL利用交付设施(负载均衡器)的不同,它还能够帮忙进行HTTPS查看、反向代理、cookie持久性、流量治理等等:在某些状况下,SSL卸载能够帮忙进行流量查看。与加密一样重要的是,它有一个次要毛病:攻击者能够暗藏在加密流量中。因为这一点,呈现了很多引人注目的破绽,比方,Magecart就应用HTTPS流量来混同从各种领取页面中窃取的PCI。 因而,一旦你的组织达到肯定的规模,查看HTTPS流量就很有必要了。而实现这一点的最好办法之一就是进行SSL卸载解决,无论是SSL终结还是SSL桥接,都容许你执行流量查看,在解决高并发流量时能够提供极大的帮忙。 五.是否应用SSL卸载?坦率地说,这所有都取决于您网站类型及流量。像ESPN或CNN这样大型的媒体网站该当非常适合应用负载均衡器,因为它们都能解决大量的流量;另一方面,如果你只是为当地一家面包店经营一个网站,那么让你的服务器去解决所有的事件就能够了——尤其是TLS 1.3进行了改良的状况下。 如你需配置负载平衡,可参阅阿里云负载平衡(SLB)SSL证书配置指南。

February 11, 2022 · 1 min · jiezi

关于ssl:ssl泛域名证书

泛域名证书是能够爱护主域名及子域名的SSL证书,并且他能够主域名下的自定义二级域名无限度的被信赖,便于用户能够自定义任何二级域名,反对泛解析应用SSL证书,所以称之为泛域名SSL证书。 SSL泛域名证书具备多个子域的通配符 SSL 平安网站。它在域字段中有一个通配符 (*) 无效 SSL 证书的批示包含有时是绿色的锁,并且“ s ”被增加到https。 泛域名SSL证书分为两种类型DV和OV两种,DV和OV相同点会进行域名认证,然而OV会减少严格的企业实名认证。 申请SSL泛域名证书一、将域名确定好后提交给Gworg进行泛域名证书申请。 二、配合对域名进行认证身份,能够抉择域名解析或者域名管理者邮箱认证。 三、认证身份工夫个别几分钟只有就能够实现。 四、取得SSL证书后间接配置到相应的服务器。

January 11, 2022 · 1 min · jiezi

关于ssl:ipssl证书

IPSSL证书,顾名思义实用于IP地址拜访可信的SSL证书,能够被浏览器信赖间接拜访,并且进行数据交换传输加密,是一种极为平安的传输方式,避免数据劫持及数据被墙等,是当下互联网环境根底平安配置,如果对于企业存在ERP、API、OA、智慧零碎互联及外联数据传输,IPSSL证书是重要加密平安部署工作。 申请IPssl证书一、申请必须是公网IP地址,确定后提交到Gworg申请(能够在淘宝外面找到https://gworg.taobao.com/)。 二、配合进行公网IP地址,采取的是URL地址文件认证。 三、大概5分钟左右就会认证实现,并且签发,外面会包含各种服务器环境的IP证书文件。 ipssl证书文件格式能够包含世界常见的服务器环境:IIS、Apache、Nginx、Tomcat等各种云平台或者零碎的应用。

January 7, 2022 · 1 min · jiezi

关于ssl:DigiCert-Smart-Seal动态签章是什么与静态签章有何区别

DigiCert Smart Seal是第一个蕴含教训证的企业徽标和PCI状态等实时平安指示器的网站签章,能让网站取得客户的信赖。 简略来说,通过点击DigiCert Smart Seal,用户可看到由DigiCert CA验证并认可的企业信息,同时还可查看该网站平安信息,用户无需来到网页,就可立刻得悉该网站的非法身份。 信赖是在线交易的根底,用户须要确保网站是平安和实在的。传统的动态签章容易受到坑骗、生效或广泛滥用,从而毁坏交易时的信赖。以下是晚期驰名的动态签章:而DigiCert Smart Seal 是企业向用户传递实时信念的一种形式,即他们的网站身份是经DigiCert验证,确认无误,值得信赖。 DigiCert Smart Seal与动态签章有何区别呢? 两者相比,DigiCert Smart Seal更加智能,更加先进,更加平安。随着网络上黑客横行,攻打一直,DigiCert Smart Seal是网站平安爱护的最佳抉择。 想要获取 DigiCert Smart Seal 的形式很简略,只须要应用DigiCert Secure Site 和Secure Site Pro SSL系列SSL证书,就能够收费申请DigiCert动静签章,实现最高级别的平安爱护。锐成信息一站式为您提供DigiCert SSL证书及Smart Seal配套服务! 如需理解更多内容,请查看DigiCert Smart Seal。

January 7, 2022 · 1 min · jiezi

关于ssl:Mac应用程序代码签名指南

原文浏览:https://www.infinisign.com/fa... Mac OS中的的应用程序签名次要用到了codesign工具进行签名,如果心愿在苹果的App Store中发行的话,则须要满足Gatekeeper规范,须要应用苹果开发者账号进行Mac App的签名和打包。 1. 筹备签名资料确保代码签名证书装置到了Mac零碎的证书存储区,通常通过双击.pfx或.p12格局代码签名证书后,提醒输出证书明码后即可实现导入证书,关上钥匙串利用后能够看到导入的代码签名证书。 2. 运行签名命令2.1 运行代码签名命令确定代码证书证书的Common Name,即通用名称,并按下方命令执行进行签名 codesign -s "Your Company, Inc." /path/to/MyApp.app2.2 确认通用名称(Common Name)关上钥匙串,找到导入的代码签名证书,双击关上后看到能够看到“主题名称(Subject Name)”栏目中的“罕用名称(Common Name)”(苹果译为罕用名称),即是上述的“Your Company, Inc.” 2.3 异样报错解决如果签名过程抛出异样谬误:CSSMERR_TP_NOT_TRUSTED,则按下述步骤进行解决 导入中级证书到Mac的证书存储区,通常中级证书在下发的证书包中,或者返回下载:材料下载;查看证书的通用名称/罕用名称(Common Name/ CN)是否正确,不是组织/企业名称; 3. 验证签名应用以下命令进行验证 codesign -v /path/to/MyApp.appcodesign -dvvv /path/to/MyApp.app codesign --display --verbose=4 /path/to/MyApp.app

December 22, 2021 · 1 min · jiezi

关于ssl:SSL-TLS-HTTP-HTTPS-SSH-分别是什么意思

HTTP + SSL/TLS = HTTPSSSL(Secure Sockets Layer,安全套接字协定)TLS(Transport Layer Security,传输层平安协定)HTTP(HyperText Transfer Protocol ,超文本传输协定),让计算机之间能够进行明文数据交换,默认端口80.HTTPS(HyperText Transfer Protocol Secure,超文本传输平安协定),用SSL/TLS对数据加密,再通过HTTP传输,保证数据的安全性,默认端口443.SSL 与 TLS 区别SSL与TLS都是用于互联网传输的加密协议。 SSL是有Netscape开发加密协议; SSL 1.0版本没有公开公布;SSL 2.0版本于1995年公布,简写成SSLv2, 于2011年被IETF废除;SSL 3.0版本于1996年公布,简写成SSLv3, 于2015年被IETF废除;TLS是基于SSL 3.0的一个新版本,原则上他的名字是SSL 4.0;只是IETF在把SSL标准化时把SSL名称改成了TLS。CA及数字证书证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构,HTTP服务降级为HTTPS时,就须要数字证书来保障其通信链路的平安,Let's Encrypt 是收费提供此证书的公益机构。 申领证书流程: 服务器学生成一对密钥(私钥+公钥);公钥+服务器信息(域名、ip等),发送给CA机构;CA机构会依据收到的信息,核实身份并加密生成证书,此证书也只有CA机构的私钥能力解密,这样也就保障了域名与服务器ip的一一对应关系,保障通信链路的安全性。应用证书 客户拜访域名:「https://www.example.com」 从CA机构获取域名对应证书,客户浏览器依据证书中公钥给须要传输的数据进行加密。服务器取得数据后,用本人的私钥来解密数据,如果公钥与私钥数据不匹配,就算第三方取得数据,也无奈解密。数字证书组成部分有: 主体信息(域名、公司名、地址、国家等); 有效期;Public Key;CA的签名;Telenet + SSH = sshSSH(Security Shell) 是专为近程登录和其余网络服务(Telnet、ftp等)提供安全性的协定。OpenSSH基于SSH协定实现了很多利用:ssh、scp、sftp等,ssh默认端口22。 OpenSSH是什么?OpenSSH是实现了SSH协定的软件包,OpenSSH官方网站,蕴含以下工具: Remote operations are done using ssh, scp, and sftp.Key management with ssh-add, ssh-keysign, ssh-keyscan, and ssh-keygen.The service side consists of sshd, sftp-server, and ssh-agent.1、sshssh是OpenSSH实现近程登录的客户端软件,让近程服务器执行命令操作。 ...

November 26, 2021 · 2 min · jiezi

关于ssl:修复-SSL-Certificate-Problem如何定位最佳实践及常见问题的处理策略

在开发过程中,应用 curl 进行申请或 git 克隆近程仓库时,可能会常常遇见一些 https 证书相干的谬误,咱们整顿了一些常见的谬误以及解决方案的汇总,放弃更新,也欢送你在评论中提供其余更好的计划。 常识补充:SSL / TLS 是什么?传输层平安协定(Transport Layer Security,缩写:TLS)及其前身 SSL( Secure Sockets Layer),是客户端(Web 浏览器)与服务器端(Web sever)之间 加密通信的平安标准协议,目标是为互联网通信提供平安及数据完整性保障,目前曾经成为互联网窃密通信的工业规范。 SSL 最新的技术利用趋势及供应商(SSL certificate authority)的市场散布,能够点击查阅。SSL 证书在线查看工具:What's My Chain Cert? | SSL Certificate Checker - Diagnostic Tool | DigiCert.com如果你想为 Server 站点构建收费的 SSL 证书,能够思考应用 Let’s Encrypt :Let's Encrypt | Certbot如何定位和剖析错误信息Tips: 设置 debug 模式有助于你追踪和定位具体问题实在起因所在(GIT_CURL_VERBOS 仅在 http/s 传输协定下无效)# On Linuxexport GIT_CURL_VERBOSE=1export GIT_TRACE_PACKET=1export GIT_TRACE=1# On Windowset GIT_TRACE_PACKET=1set GIT_TRACE=1 set GIT_CURL_VERBOSE=1# 如果以后机器有装置 python,能够疾速查看证书门路,辅助定位解决问题python -c "import ssl; print(ssl.get_default_verify_paths())" # 应用 openssl 查看站点的证书状况openssl s_client -showcerts -connect常见问题问题:SSL certificate problem: unable to get local issuer certificate起因: ...

October 30, 2021 · 3 min · jiezi

关于ssl:SSL证书七大常见错误及解决方法

无论教训如许丰盛,在购买或是装置SSL证书的过程中咱们总会遇到这样或那样的谬误。那么SSL证书装置有哪些常见谬误呢?呈现这些谬误的起因以及解决办法是什么呢?小编为您总结了SSL证书七大常见谬误及解决办法,一起来看看! 谬误一:域名验证失败解决办法:请确认应用了正确的域名验证办法,并正确的实现了验证。 (抉择正确的域名验证形式)• 应用邮箱验证,首先确保您应用的是网站管理员邮箱,即任选以下前缀的邮箱:admin@域名,administrator@域名,webmaster@域名,hostmaster@域名,postmaster@域名。请不要应用申请者的集体电子邮箱,否则订单无奈提交,也无奈成域名验证。 • 应用DNS验证,请到域名解析中增加指定的内容,确保DNS记录值与订单信息中提供的内容相匹配,并确保这条记录能够公开拜访。 • 应用文件验证,请到域名的根门路上新建指定的门路并搁置验证内容,请确认增加的门路和搁置的内容与订单信息中提供的内容相匹配,并确保该门路链接能够公开拜访。 留神:依据最新CA/B Forum对SSL证书域名验证的策略变更告诉,从2021年12月1日1起,通配符证书不再反对文件验证。 谬误二:私钥失落解决办法:从新签发证书。如果您发现私钥失落,并确定电脑存储器上已找不到的状况下,请在第一工夫重签证书,防止私钥失落带来的数据泄露危险。 如果是在锐成信息平台申请的SSL证书,凡在证书有效期内重签SSL证书均不收取任何费用。 留神:重签时请务必生成新的.csr文件和.key文件,并妥善保存好。 谬误三:CSR有效解决办法:从新生成CSR。重签证书生成CSR时,请确保域名与原CSR中的域名保持一致。一个CSR只匹配一个私钥,请不要重复使用同一个CSR。 CSR中的信息能够应用工具解码进去,您能够应用锐成信息的收费解码工具,即CSR文件在线验证工具来查看CSR中填写的信息是否正确。 此外,证书申请的前/后如果有多余的空格和破折号,也会使CSR证书生效。 谬误四:通用名称不匹配解决办法:当提交通配符证书订单时,请确认域名是※.domain.com这种格局,星号不可省略,否则会收到谬误提醒:有效的域名格局。当申请非通配符证书时,如果填写了*.domain.com这种格局,同样也会收到报错:有效的域名格局;非通配符域名请间接填写为domain.com。 (域名有效格局提醒)如前所述,代表您能够应用此类证书爱护的所有子域名。例如,如果要爱护 www.racent.com、ssltrus.racent.com 和 portal.racent.com,在 CSR 中输出※.racent.com 作为通用名称即可。留神:不能在带有星号的通配符前创立子域,例如mail.※.domain.com,或双通配符,例如※.※.domain.com。 谬误五:公钥和私钥不匹配解决办法:从新生成CSR文件和私钥,并平安保留。在申请证书时您可能屡次生成了私钥和CSR文件,或提供的CSR和私钥并不是同时生成的,这将导致公钥私钥不匹配。这种状况下,须要从新生成CSR文件和私钥,而后提交服务商申请从新签发SSL证书,替换之前的证书方能应用。 谬误六:SAN选项不匹配解决办法:确认输出的SAN与证书蕴含的SAN是否统一。呈现此报错的起因有多种,您可能: 在 SAN 之前或之后多拼了一个空格。SAN有拼写错误。将证书的通用名称填写为SAN。谬误地将SAN填写为子域名、多域名、外部SAN或IP地址。谬误七:证书不受浏览器信赖在证书装置实现后,可能还会呈现证书不受信赖的正告。解决办法: 首先,确认装置的SSL证书是寰球可信SSL证书,可兼容您正在应用的浏览器。再查看您是否未装置两头证书或根证书失落。若两头证书遗失,您能够与您的证书代理服务商分割,查看并确定您须要哪种两头证书。 其次,请查看您的网站素材中是否蕴含HTTP资源,如有,请替换为HTTPS资源。 论断除此之外,您还需注意记录您SSL证书的到期工夫,为避免SSL证书过期导致的业务中断,请确保在证书过期之前进行更新替换。如您还有其余问题,请征询锐成信息在线客服,咱们有业余的团队,帮您解决技术上的难题。

October 13, 2021 · 1 min · jiezi

关于ssl:带你了解数仓安全测试的TLS协议

摘要:SSL/TLS协定是业界罕用的加密通信协议,通过该协定能够实现通信单方身份认证,会话密钥协商,通信内容加密和完整性爱护。本文分享自华为云社区《GaussDB(DWS)平安测试之TLS协定》,作者:ACBD 。 1. 协定平安机制SSL/TLS协定是业界罕用的加密通信协议,通过该协定能够实现通信单方身份认证,会话密钥协商,通信内容加密和完整性爱护。SSL/TLS协定的算法套件蕴含4种算法:密钥替换、认证、加密、MAC算法。如TLS_DHE_RSA_WITH_AES_128_CBC_SHA256算法套件,DHE是密钥替换算法,RSA是认证算法,AES_128_CBC是对称加密算法,SHA256是做完整性爱护的MAC算法。如果没有显示密钥替换算法和认证算法,那么这两者都是RSA算法,如:TLS _RSA_WITH_AES_128_CBC_SHA。如果套件中的有一种算法不平安,那么就应该禁用该算法套件。 SSL/TLS协定体系结构 SSL/TLS协定实现的平安机制包含: • 密钥配送的安全性:利用密钥协商算法来保障密钥自身的安全性。• 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。• 身份验证机制:基于证书利用数字签名办法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。• 音讯完整性验证:音讯传输过程中应用MAC算法来测验音讯的完整性。 上述四个局部形成了SSL/TLS加密套件。 例如TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,由协定名称TLS、密钥替换算法 KeyExchange(密钥协商)ECDHE、认证算法 Au (身份验证)RSA、对称加密算法 Enc (信息加密)AES_256_CBC和信息摘要 Mac(完整性校验)SHA384组成。 SSL/TLS协定组成 TLS/SSL的性能实现次要依赖于三类根本算法:非对称加密、对称加密和散列函数 Hash,其利用非对称加密实现身份认证和密钥协商,对称加密算法采纳协商的密钥对数据加密,基于散列函数验证信息的完整性。 2. 测试关注点• 协定版本• SSL协定:SSL协定各版本均存在安全漏洞,因而禁止应用,包含0、2.0和3.0。• TLS协定:禁止应用0、TLS1.1协定,荐应用TLS1.2或者TLS1.3。• 密钥协商替换算法 在客户端和服务器开始替换TLS所爱护的加密信息之前,他们必须平安地替换或协定加密密钥和加密数据时要应用的明码。DH/ECDH的密钥协商协定不能验证服务器或用户,易受中间人攻打因而不能应用,须要应用能提供前向窃密能力的DHE/ECDHE算法,且禁止应用RSA作为密钥替换算法。 认证算法目前支流的是RSA算法,需注意算法长度小于2048bits为不平安算法,举荐应用长度大于3072bits的平安算法。 加密算法数据加密应用对称加密算法,常见的加密算法有 AES-CBC、3DES、AES-GCM等,留神应用平安的加密算法,对于已被认为不平安的算法应禁止应用。 分组加密场景,产品应优先选择GCM模式。TLS的算法套件的抉择,是依照程序从前到后一一匹配的,须要把优选的套件放在后面,次选的放在前面。 完整性算法为了防止网络中传输的数据被非法篡改,SSL/TLS利用基于MD5或SHA的MAC算法来保障音讯的完整性。其中基于MD5的算法已被证实不平安,禁止应用,基于SHA的算法需应用平安的SHA3、SHA25或以上。 想理解GuassDB(DWS)更多信息,欢送微信搜寻“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后盾还可获取泛滥学习材料哦~ 点击关注,第一工夫理解华为云陈腐技术~

September 29, 2021 · 1 min · jiezi

关于ssl:折腾了这么多年现在返璞归真只要4条命令

在某个边远的中央: sudo iptables -t filter -A FORWARD -s 192.168.88.0/24 -j ACCEPTsudo iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o eth0 -j MASQUERADEsudo socat TUN:192.168.88.1/24,tun-name=ssl,up openssl-listen:443,reuseaddr,cert=server.pem,verify=0,fork在本人机器上: sudo socat TUN:192.168.88.2/24,tun-name=ssl,up openssl-connect:somewhere.doesnot.exist:443,cafile=server.crt,verify=0应该也能够级联socat遇到不友好人士扔个gzip炸弹啥的,须要钻研一下ip-pktinfo。

March 24, 2021 · 1 min · jiezi

关于ssl:IP地址SSL证书

已经相当长时间内,针对 IP 的 SSL证书只反对企业型验证级别,即只有企业身份才能够申请。 环度SSL证书2019年引入针对集体或者小微企业的 DV级别的 IP证书,即不须要验证申请者是组织还是集体也能够申请到IP的SSL证书。 Ip地址的SSL证书,就是给ip加上https. 在业务倒退中,常常须要间接应用ip地址,而不方便使用域名,但大多数SSL证书都是针对域名的。那么ip具备什么条件能力申请SSL证书呢: 必须是具备管理权限的公网IP地址才可申请浏览器信赖的 SSL证书 IP SSL证书分为3个版本,价格及申请见:https://www.gworg.com/ IP证书也能够参考:https://gworg.taobao.com/ DV 级别:默认能够爱护1-3个IP地址,反对扩大到 1000 个IP 地址; OV 级别单IP版:爱护一个IP地址 OV 级别多IP版:默认爱护 4 个IP地址,反对扩大到 250 个IP 地址

November 9, 2020 · 1 min · jiezi

关于ssl:通配符SSL证书应该去哪里注册申请

SSL证书基本上是服务器上容许内容加密的已实现代码。该证书通常用于须要确保安全解决和传输数据的网站上,例如在线商店,银行,政府网站等。具备SSL的网站可实现服务器与终端访问者之间的数据传输,并以加密模式进行数据传输,反之亦然,从而确保了从第三方截取秘密数据时的齐全安全性。其中通配符SSL证书是最为突出的一种类型,他能够抉择用于DV类型或者OV类型的两种抉择。通配符能够最大的特点是能够爱护旗下任何自定义的子域名。 通配符证书重点思考的是浏览器信赖问题,他会影响网站建设意义,抉择较高信赖的数字证书品牌是必须冷静下来须要思考的问题。 Gworg倡议能够抉择支流SSL证书品牌,比方:GlobalSign、DigiCert,当然这些SSL品牌诚然很好,很多因为价格问题擦肩而过,所以对此Gworg给出了优选计划,无论是集体还是企业抉择通配符证书都能够失去很现实的价格。

November 9, 2020 · 1 min · jiezi

关于ssl:SSL与HTTPS

前言在本人学习SSL和HTTPS的时候感觉SSL的加密过程较为繁琐,在此顺便记录下学习的过程。SSL简介SSL(secure socket layer) 可能帮忙零碎在客户端和服务器之间建设一条平安通信通道。SSL 平安协定是由 Netscape Communication 公司在 1994 年设计开发,SSL 依赖于加密算法、极难窃听、有较高的安全性,因而 SSL 协定曾经成为网络上最罕用的平安窃密通信协议,该平安协定次要用来提供对用户和服务器的认证;对传送的数据进行加密和暗藏;确保数据在传送中不被扭转,即数据的完整性,现已成为该畛域中全球化的规范。 为什么须要加密当咱们拜访某些网站的时候会呈现如下信息而这些网站的网站根本都是基于http协定的,然而在其余基于https协定的网站就显示为平安的,那么为什么HTTPS比HTTP平安呢?HTTPS的全称为HTTP Over SSL,那么其本质就是http,只不过加了一层SSL保障其数据传输的平安,仿佛这就简略的解释了为什么HTTPS比HTTP平安。这个时候就须要咱们认真想一想了,为什么HTTP就是不平安的,并且为什么肯定须要加密呢?其实起因也很简略,就是在基于http链路在传输数据的时候是明文传输的,如果这个时候有一个中间人劫持了服务器的数据并且取得你们公司中特地重要的数据信息,这样就会导致数据泄露,从而产生安全隐患。(好心揭示下,不要应用专用wifi,这个wifi就是一个互联网连接点,有可能收集表单数据) 第一阶段(对称式加密)既然不平安,那么在服务端传递给客户端的时候会将数据进行加密,那么客户端天然也须要具备解密的办法,所以在传输数据的时候,服务端会将数据和解密的办法同时传递到客户端。 同时以后阶段是最为简略的阶段,也就是加密的算法和解密的算法是一样的,也称之为对称式加密,就如同很多年前的钥匙,既能够锁门,也能够开门一样。那么这种加密办法仍然不平安,起因在于两头仍然有可能有人拦挡你的数据,而后利用数据中的密钥解开你的数据,而后进行批改,再通过密钥加密发送给你。 这种形式的益处是加密速度快,毛病也不言而喻,就是容易被拦挡和篡改。 第二阶段(非对称式加密)能够想到解决上述对称式加密算法毛病的方法就是,加密的时候应用一套算法,解密的时候应用另外一套算法。加密算法只用于服务器加密,传输的时候传输加密的数据和解密算法即可。到这里就出现了SSL的雏形了,然而这个算法也有问题。如果中间人拦挡了数据后,获取了解密算法,这样他仍然能够看到你的数据,也就是数据仍然有被窃取的危险,并且能够自定义一套加密和解密算法,在批改数据后应用自定义的加密算法加密数据并且将自定义的解密算法一并传输给客户端。其中加密算法和解密算法叫公钥和私钥,公钥和私钥都能够加密和解密,只不过一个用来加密的话,就只能应用另外一个来解密。个别状况下是应用私钥进行加密,而后传输公钥给客户端。 第三阶段(SSL)如果要解决非对称加密的问题,咱们能够想到,只有浏览器只意识服务端的公钥,这样其他人自定义的数据和解密算法就会被抛弃,也就是说,咱们不在让服务器传递公钥,而是在浏览器外部“内嵌”一个公钥,这个公钥得和服务端的公钥要统一。那么这样就会产生一个新的问题,怎么能力浏览器“内嵌”一个和服务端一样的公钥呢?这就要引入CA的概念了,CA指的是一个第三方,就相似与每一个人的身份证下发机构一样,具备较高的权威和信用度。最常见的CA机构就是GlobalSign,这个CA机构会为每一个注册的网站下发一个数字证书,数字证书里有证书持有者、证书持有者的公钥等信息,服务器把证书传输给浏览器,浏览器从证书里取公钥就行了。这样就保障了浏览器取得的公钥就肯定是来自于拜访的服务器的了。当初惟一的问题就是这个证书如何保障肯定不会被篡改。 数字签名和浏览器的校验过程。首先CA领有一对本人的私钥和公钥,它会将证书的明文信息(包含了网站域名、hash算法和服务端公钥等信息)的一部分进行hash,再对hash后的值应用CA的私钥进行加密,而后将明文和加密后的数字一起组成一个数字签名。而后这个数字签名会在浏览器端进行校验,也就是先CA机构的公钥(浏览器置信CA机构,所以有CA机构的公钥)对数字签名进行解密,再应用hash算法对明文进行hash,判断hash后的值和数字签名解密后的值是否相等,如果是就阐明证书是可信的。 为什么应用了数字证书就能够避免篡改这里假如,中间人有CA机构的公钥,那么解开了数字证书,也就是说,中间人仍然有可能存在“窥探”数据的可能(数字证书和加密后的数据当初是一起发送的),解开数字签名后,中间人仍然无奈批改数字签名,因为没有CA的私钥(这个是相对不能丢的),同时,如果中间人伪造一个数字证书的话,因为没有CA的私钥,生成的数字签名浏览器解不开,在浏览器校验的时候肯定会出错,天然会抛弃的。 HTTPS中的SSLHTTPS协定反对session,在一次session会话的过程中,客户端会承受到服务端发送的sessionId,服务器会把该密钥存到相应的sessionId下,之后浏览器每次申请都会携带sessionId,服务器会依据sessionId找到相应的密钥并进行解密加密操作,这样就不必要每次从新制作、传输密钥了。 HTTPS的毛病HTTPS协定屡次握手,导致页面的加载工夫缩短近50%;HTTPS连贯缓存不如HTTP高效,会减少数据开销和功耗;申请SSL证书须要钱,性能越弱小的证书费用越高。SSL波及到的平安算法会耗费 CPU 资源,对服务器资源耗费较大。HTTP和HTTPS的区别HTTPS是HTTP协定的平安版本,HTTP协定的数据传输是明文的,是不平安的,HTTPS应用了SSL/TLS协定进行了加密解决。http和https应用连贯形式不同,http的连贯是无状态的,https是由SSL+HTTP协定构建的可进行加密传输、身份认证的网络协议,默认端口也不一样,http是80,https是443。

November 4, 2020 · 1 min · jiezi

关于ssl:是否可以在单个IP地址上使用自己的-SSL证书托管不同的站点

是否能够在单个IP地址上应用“本人的” SSL证书托管不同的站点?这是我常常遇到的一个问题。在IIS 8之前,如果站点应用雷同的SSL证书或应用通配符SSL证书,则能够在单个IP地址上托管多个须要SSL的站点。仅当您须要在以后站点/域的子域级别应用SSL时,通配符证书才有用。然而,如果您的网站名称不同怎么办?好吧,您能够取得主题备用名称(SAN)SSL证书。通过此SSL证书,您能够应用一个SSL证书爱护多个站点。IIS 8之前的最初一个可用选项要求将每个其余SSL站点设置为雷同的IP地址,但应用不同的SSL端口号。这样,您就能够在与另一个站点雷同的IP地址上应用每个站点/域的SSL。默认状况下,SSL证书应用端口443进行平安通信。不须要在URL中指定此端口,因为这是规范端口。当您对SSL应用其余端口号时,您将须要在URL中增加非标准SSL端口号,以使其起作用。能够设想,这不是您要运行公共站点的形式。用户如何晓得要输出的端口号,这不是浏览站点时用户相熟的常见步骤。 通过咱们的合作伙伴服务欠缺您的网络经营核心产品 [](https://www.sherweb.com/partn...增加一个额定的IP地址来托管另一个须要SSL的站点是罕用的办法,然而对于某些人来说,这有时不是一个抉择。随着Windows Server 2012上IIS 8的问世,增加了一项称为服务器名称标识(SNI)的新性能。此性能为在单个IP地址上托管具备不同SSL或多个SSL的多个站点提供了更简略的解决方案。默认状况下,IIS 8中蕴含此性能,并且不须要装置任何其余性能即可开始应用它。上面,我将逐渐介绍与配置SNI无关的步骤。在SSL解决方案中施行SNI时要留神的一件事,它不适用于在Windows XP上运行Internet Explorer的那些用户。如果您的服务器有多个IP地址,除了将单个站点调配给SSL的单个IP地址之外,您还能够对某些站点施行SNI。两种办法都能够在不同的IP地址上相互配合应用而不会呈现问题。 脚步: 1)您要做的第一件事就是为服务器上的每个站点导入SSL证书(如果尚未实现)2)接下来,关上IIS 8 Manager并增加您的第一个须要SSL的站点。如果第一个站点曾经存在,请继续执行下一步3)增加站点后,抉择站点并单击右侧“操作”菜单窗格下的“绑定…”。 4)单击增加。抉择https作为类型b。您能够将IP地址保留为“ All Unassigned ”(全副未调配),也能够抉择要应用的IP地址(如果服务器上有多个IP,则须要指定要用于SNI的IP)。输出主机名 d的站点/域名。选中“须要服务器名称批示”框。从下拉框f中抉择站点的SSL证书。点击确定 5)创立第二个站点,并依照以下步骤增加SSL绑定。6)抉择Bindings,而后单击Adda。抉择https作为类型b。您能够将IP地址保留为“ All Unassigned ”(全副未调配),也能够抉择要应用的IP地址(如果服务器上有多个IP,则须要指定要用于SNI的IP)。输出主机名 d的站点/域名。选中“须要服务器名称批示”框。从下拉框中抉择站点的SSL证书 7)点击确定实现设置 这就是所有要做的事件。测试该站点的SSL,以确保每个站点均失常运行。如果您还有其余须要增加SSL的站点,则能够继续执行上述步骤,为每个新站点增加SSL绑定。

October 14, 2020 · 1 min · jiezi

关于ssl:lets-encrypt-ipv6下更新ssl证书404问题

前些时间服务器配置了ipv6拜访,起初就收到了let’s encrypt的邮件说域名ssl证书过期。但问题是certbot会应该是自动更新证书才对啊。 登上服务器手动更新证书试下,提醒404谬误: IMPORTANT NOTES: - The following errors were reported by the server: Domain: gwlin.com Type: unauthorized Detail: Invalid response from http://gwlin.com/.well-known/acme-challenge/eHOBoFPw4Uz5vM9Xzk9D91nsm292bxSNyuePVerQRMY [2600:3c01::f03c:92ff:fee2:491b]: "<html>rn<head><title>404 Not Found</title></head>rn<body bgcolor="white">rn<center><h1>404 Not Found</h1></center>rn<hr><center>" To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. 于是谷歌一顿,但文章都在说是well-known目录的配置问题,于是查看了nginx配置,查看了网站根目录的权限,齐全没用。 在stackoverflow上有一个0赞的答案说到应该查看ipv6是否开启了,如果开启了就要加上 [::]:80 。 一言惊醒梦中人啊,忽然想起前端工夫的确启用了ipv6。于是关上gwlin.com的nginx配置文件,加上: { //... server_name gwlin.com; listen 80; listen [::]:80; // 加这个 //...}而后certbot更新证书,搞定。 ...

October 14, 2020 · 1 min · jiezi

关于ssl:如何自动申请免费的SSL-证书

上次介绍了如何通过第三方网站申请收费的SSL 证书,但有效期只有三个月,三个月之后又须要再次申请,记得还好,如果忘了可能还会造成不必要的损失。 Let's Encrypt 是一个收费提供的SSL 证书的CA,尽管每次签发的有效期都只有三个月,然而发证是自动化的,发证速度较快,并且能够通过脚本来主动续签,为集体网站应用HTTPS提供了一个不错的抉择。 Let’s Encrypt (以下简称LE)的证书签发次要应用基于 ACME协定 的证书主动治理客户端来实现。 LE官网举荐的客户端是 Certbot ,本文中就是应用 Certbot 来获取和续签证书。 LE 是如何主动签发证书的假如当初要申请CA 证书的域名是 example.com。 首先由WebServer(也就是咱们用户端的服务器)的治理客户端(如Certbot)发送申请到LE,让LE来验证客户端是否真的管制example.com这个域名,接下来LE会提出一些验证动作(原文challenges),比方让客户端在一个很显著的门路上放指定的文件。同时,LE还会收回一个随机数,客户端须要用这个随机数和客户端本人的私钥来进行签名。 WebServer上的客户端实现LE指定的域名验证动作并且将加密后的签名后,再次发送申请到LE要求验证,LE会验证发回来的签名是否正确,并且验证域名验证动作是否实现,如下载指定的文件并且判断文件外面的内容是否符合要求。 这些验证都实现当前,能够申请证书了。 实现验证后,客户端生成本人的私钥以及 Certificate Signing Request(CSR) 发送到LE服务器,LE服务器会将CA证书(也是公钥)发放到你的服务器。 这样就实现了CA证书的自动化发放了。 应用Certbot 获取证书LE 的CA 证书发放原理看着还挺麻烦的,但如果应用 Certbot 客户端,整个过程还是挺简略的。 在正式获取证书之前,举荐先去Certbot 官网抉择适宜本人的零碎环境。 我这边零碎环境是Nginx + Ubuntu 18.04 LTS,所以上面介绍的装置流程只实用于Ubuntu + Nginx。 1. 装置 snapsnap) 是Canonical公司公布的全新的软件包治理形式,它相似一个容器领有一个应用程序所有的文件和库,各个应用程序之间齐全独立。应用snap 包的益处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易治理。然而由此带来的问题就是它占用更多的磁盘空间。 $ sudo apt update$ sudo apt install snapd2. 装置 certbot在装置 Certbot 之前,最好先移除历史快照。 $ sudo apt-get remove certbot进行装置: ...

September 23, 2020 · 1 min · jiezi

关于ssl:云小课-选定合适的证书做有证的合规域名

摘要:本篇介绍在华为云SSL证书治理中购买证书时,如何依据本身状况轻松选定适合的SSL证书。华为云SSL证书治理(SSL Certificate Manager,SCM)是一个SSL(Secure Socket Layer)证书治理平台,平台联结寰球出名数字证书服务机构为用户提供购买SSL证书的性能,用户也能够将本地的内部SSL证书上传到平台,实现用户对外部和内部SSL证书的对立治理。 进入选购SSL证书界面: 1.登录治理控制台。 2.单击页面上方的“服务列表”,抉择“平安 > SSL证书治理”,进入SSL证书治理界面。 3.在SSL证书治理界面右上角,单击“购买证书”。 在“购买证书”页面,选购证书。 购买证书的过程中,您是否有这样的困惑: 应该抉择哪种证书类型,哪种类型才适宜? 哪家品牌的证书更靠谱呢? 抉择1张多域名证书好呢,还是选多张单域名证书好呢? ...... 遇到这些状况,无妨追随小课的脚步,一起学习如何抉择适宜的SSL证书。戳这里 证书类型华为云SSL证书治理服务提供有OV、OV Pro、EV、EV Pro、DV类型的证书。不同类型的SSL证书在浏览器显示成果、安全等级、信赖等级等方面的区别如下: 表1-1 证书类型 如果您的网站主体是集体(即没有企业营业执照),只能申请DV型数字证书。对于个别企业,倡议购买OV及以上(OV Pro、EV、EV Pro)类型的数字证书。对于金融、领取类企业,倡议购买EV型证书。挪动端网站或接口调用,建议您应用OV及以上(OV Pro、EV、EV Pro)类型的证书。证书品牌以后反对的品牌包含“DigiCert”、“GlobalSign”、“GeoTrust”。 DigiCert:寰球驰名的数字证书提供商,服务范畴超过150多个国家,领有超过10万客户。GlobalSign:一家声誉卓著,备受信赖的CA核心和SSL数字证书提供商,并在寰球领有泛滥合作伙伴。GeoTrust:寰球驰名的数字证书提供商,服务范畴超过150多个国家,领有超过10万客户。公司服务于各大中小型企业,始终致力于用最低的价格来为客户提供最好的服务。不同证书品牌资质都很值得信赖,均可释怀选购。另外,不同品牌提供的证书类型不同,例如GlobalSign目前提供企业型OV、增强型EV类型的证书。 域名类型理解SCM提供的域名类型购买证书时,SCM中提供的“域名类型”有“单域名”、“多域名”和“泛域名”3种类型。它们的具体区别如下: 表1-2 SCM提供的域名类型 购买泛域名证书,须要留神泛域名证书匹配域名的规定。只能匹配同级别的子域名,不能跨级匹配,匹配示例如下: 示例1: 示例2: 抉择适合的域名类型依据您须要绑定证书的域名个数及域名是同级或跨级进行抉择。 场景一:如果仅一个域名须要绑定在1张SSL证书中,则抉择单域名。示例:只有一个域名须要绑定在1张SSL证书中,则抉择“单域名”。 场景二:如果有多个域名须要绑定在SSL证书中,请依据以下状况进行抉择:1.多个域名,各域名均不在同一级别中,且须要绑定在1张SSL证书中,抉择多域名。 示例:有3个域名,不在同一级别中,且须要绑定在1张SSL证书中,则抉择“多域名”。 2.多个域名,各域名均在同一级别中,且须要绑定在1张SSL证书中,则抉择泛域名。 “域名数量”依据须要绑定的域名数量而定,域名数量的多少会间接影响到证书费用。 示例:有4个域名,在同一级别中,且须要绑定在1张SSL证书中,则抉择“泛域名”。 3.N个域名,有些域名在同一级别中,有些域名不在同一级别中 形式一:购买N张单域名证书。形式二:同一级别的,购买1张泛域名证书,其余不同级别的,购买1张多域名证书。形式三:购买1张多域名证书,“域名数量”为N。示例:有5个域名(http://a.domain.com、http://b.domain.com、http://c.domain.com、http://d.huawei.com、http://e.huaweicloud.com),须要绑定在SSL证书中 在证书品牌、证书类型、有效期雷同的状况下,有如下购买形式,请联合优劣势以及价格进行综合思考,抉择适合的类型: 表1-3 购买形式 有效期和购买量有效期:证书的有效期,最多反对购买2年。 证书有效期从签发日开始计算。证书购买后,无奈缩短有效期,且证书到期后须要从新购买并部署,请依据应用状况正当布局。 ** ** 有效期长短不同,优惠力度可能会有差别,请关注哦~~ 购买量:购买的证书个数。请联合域名类型,综合思考购买的证书张数。 证书购买完了当前,如果须要应用证书去绑定域名,达到HTTPS的成果,还须要进行“申请证书”、“域名验证”、“组织验证”等操作,连忙戳这里理解详情吧~~ ...

September 11, 2020 · 1 min · jiezi

关于ssl:SSL-证书过期事件频发切忌不要因小失大

技术编辑:徐九丨发自:思否编辑部 不久前,微博有了一个技术圈儿的热搜。 在同一时间,大量特斯拉车主纷纷反映 APP 呈现大面积宕机,手机钥匙无奈获取车辆信息,行车过程中无奈点亮车内仪表盘和中控屏只能“盲开”。 在紧急修复之后,特斯拉官网示意起因系 APP 域名证书(SSL 证书)过期,导致 APP 无奈连贯。这样一个推崇技术的企业居然呈现这种低级的技术问题,不免让人唏嘘。 但其实 SSL 证书过期事件,已经在泛滥大型企业甚至国外某些政府机构网站均呈现过。据《企业数字证书治理平安考察 2019》权威报告统计,74% 的组织经验过停机或因为证书过期导致的停机, 每个组织的均匀损失超过 1100 万美元。 为什么大家连一个简略的证书认证都搞不好?SSL 证书对企业来说到底有什么用? 一、从 HTTP 协定的致命缺点说起 HTTP 协定有一个致命缺点,即这是一种没有加密的明文传输协定,不能平安的传输敏感数据信息。而创造 SSL 协定的初衷,就是为了解决 HTTP 的这一问题。和 SSL 常常一起呈现的 TLS,是将 SSL 协定标准化之后的名称,因而常常有人将其并列称为 SSL/TLS。 SSL/TLS 证书作为数据安全和隐衷爱护的平安标签,在网络中被大量应用,但近几年来,互联网安全事件依然频发,究其原因,一是因为企业安全意识忽略导致的证书过期,另一个起因是此前证书的寿命过长,大部分企业不会配合进行频繁的证书更新。 为了防止这一问题,从 2020 年 9 月 1 日开始,苹果、谷歌、Mozilla 的浏览器和设施将对有效期超过 398 天的新 TLS 证书显示谬误。 要晓得最早的证书寿命是 8 年,起初缓缓缩短为5年、3 年、2 年,这次缩短为一年左右,无疑为企业本来就繁琐艰难的证书治理再次减少了难度。 那么装置 SSL/TLS 证书真的有必要么?不装置又会呈现什么问题? 二、企业必须装置 SSL/TLS 证书么? 毫无疑问,证书有效期期缩短会减少证书使用者更新证书的频率。企业须要每年进行一次证书申请,而证书申请个别要走商务合同、通过层层审核。过程繁琐且周期长,若是忽略遗记更新,还会导致证书过期,从而为企业带来利益和品牌的双重损失。 但这个证书不装可能还真不行。 ...

August 13, 2020 · 1 min · jiezi

阿里云环境中TLSSSL握手失败的场景分析

TLS/SSL握手是一个相对复杂的过程,在阿里云环境中结合产品,安全等特性,可能会让TLS/SSL握手过程的不定性更多。本文来总结下各种握手失败的场景。 一次TLS/SSL握手的过程本文不详细介绍TLS/SSL基础知识,相关介绍可以参考文章。下面3张图描述了3种TLS/SSL握手的全过程。 服务器验证的完全握手 (Full Handshake with Mutual Authentication)这种是互联网大部分HTTPS流量使用的验证模式。证书在服务器上,客户端通过证书来验证服务器是否可靠。 双向验证的完全握手 (Full Handshake with Server Authentication) 这种是对客户端安全性有要求的验证模式。除了客户端要验证服务器外,服务器对客户端也需要进行验证,所以需要双向验证。和上面的步骤相比,多了客户端向服务器传输证书的过程。 简单握手 (Abbreviated Handshake) 完全握手需要2个RTT并交互很多消息,在会话复用的场景下,可以让握手简化到1个RTT完成。过程如下: 常规TLS/SSL握手失败TLS/SSL版本不匹配自从TLS 1.2版本在2008年发布以来,绝大部分HTTPS流量都跑在TLS 1.2上。服务器处于安全性考虑通常也只支持较高版本TLS,比如TLS1.0及以上。但是仍然有一些版本比较旧的操作系统和浏览器存在,如果这些客户端用低版本TLS/SSL向服务器发起握手,会因为服务器不支持而直接失败。 比如淘宝网只支持TLS 1.0及以上版本,用openssl发起SSL 3版本的握手,就会出现handshake failure。 # openssl s_client -connect www.taobao.com:443 -ssl3 -msgCONNECTED(00000003)>>> ??? [length 0005] 16 03 00 00 8f>>> SSL 3.0 Handshake [length 008f], ClientHello 01 00 00 8b 03 00 2a a0 d3 c5 10 b0 0a c0 0b ea fc e7 49 8f d1 66 cd 2a 51 c1 ab f4 ab b7 63 e1 a7 3e e0 d7 14 9b 00 00 64 c0 14 c0 0a 00 39 00 38 00 37 00 36 00 88 00 87 00 86 00 85 c0 0f c0 05 00 35 00 84 c0 13 c0 09 00 33 00 32 00 31 00 30 00 9a 00 99 00 98 00 97 00 45 00 44 00 43 00 42 c0 0e c0 04 00 2f 00 96 00 41 c0 12 c0 08 00 16 00 13 00 10 00 0d c0 0d c0 03 00 0a 00 07 c0 11 c0 07 c0 0c c0 02 00 05 00 04 00 ff 01 00<<< ??? [length 0005] 15 03 00 00 02<<< SSL 3.0 Alert [length 0002], fatal handshake_failure 02 28140191222585232:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:s3_pkt.c:1493:SSL alert number 40140191222585232:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:659:---no peer certificate available---No client certificate CA names sentTLS/SSL cipher suite不匹配在握手的前两个ClientHello和ServerHello包中有一个重要的任务就是协商cipher。客户端在ClientHello中会带上所有支持的cipher suite, 服务器在收到ClientHello中的cipher suite后,会和自己支持的cipher suite一一匹配,如果没有可以匹配的就会握手失败。 ...

July 10, 2019 · 3 min · jiezi

据消息透漏最终幻想14的NA服务器遇上DDOS

大家都知道游戏行业一直是DDoS攻击的重头目标。昨天下午据消息透漏最终幻想14的NA服务器遭遇DDoS攻击。Square Enix的官方表示从2019年6月28日下午12:24(太平洋标准时间) 有玩家可能会遇到的以下问题:1、与NA数据中心断开连接,错误代码是一些比较常见的,6001,2002,5006和90002代码;2、难以登录到NA数据中心;3、难以访问,发送,以及从NA数据中心接收数据。此次事件受影响的服务主要是:FINAL FANTASY XIV ,主要影响北美服务器。最终幻想官方表示现在还不清楚是谁造成了DDOS攻击,也不清楚攻击的方式。团队正在研究解决问题并采取相对应的对策。 DDoS分布式拒绝服务,黑客试图通过使用大量恶意请求来拥塞用户的网络带宽来达到拒绝服务的目的;有的是通过占用服务器的连接资源池来达到拒绝服务的目的;有的通过占用服务器的SSL会话资源来达到拒绝服务的目的;还有的是用过占用服务器的应用处理资源,极大的消耗服务器处理性能从而达到拒绝服务的目的。多年来,DDOS攻击一直是整个行业最头疼的问题。全国每天会被DDOS攻击的游戏公司数量也是极其可观的。对于游戏行业来说,DDoS攻击情况比较复杂,攻击流量大、类型多样、变化快,攻击人员更专业,攻击周期更长,墨者安全建议选用良好的机房设施,BGP优化线路。使其防护更稳定,时效性更快,这样可以将损失降到最低。

June 29, 2019 · 1 min · jiezi

使用NGINX作为HTTPS正向代理服务器

NGINX主要设计作为反向代理服务器,但随着NGINX的发展,它同样能作为正向代理的选项之一。正向代理本身并不复杂,而如何代理加密的HTTPS流量是正向代理需要解决的主要问题。本文将介绍利用NGINX来正向代理HTTPS流量两种方案,及其使用场景和主要问题。 HTTP/HTTPS正向代理的分类简单介绍下正向代理的分类作为理解下文的背景知识: 按客户端有无感知的分类普通代理:在客户端需要在浏览器中或者系统环境变量手动设置代理的地址和端口。如squid,在客户端指定squid服务器IP和端口3128。透明代理:客户端不需要做任何代理设置,“代理”这个角色对于客户端是透明的。如企业网络链路中的Web Gateway设备。按代理是否解密HTTPS的分类隧道代理 :也就是透传代理。代理服务器只是在TCP协议上透传HTTPS流量,对于其代理的流量的具体内容不解密不感知。客户端和其访问的目的服务器做直接TLS/SSL交互。本文中讨论的NGINX代理方式属于这种模式。中间人(MITM, Man-in-the-Middle)代理:代理服务器解密HTTPS流量,对客户端利用自签名证书完成TLS/SSL握手,对目的服务器端完成正常TLS交互。在客户端-代理-服务器的链路中建立两段TLS/SSL会话。如Charles,简单原理描述可以参考文章。注:这种情况客户端在TLS握手阶段实际上是拿到的代理服务器自己的自签名证书,证书链的验证默认不成功,需要在客户端信任代理自签证书的Root CA证书。所以过程中是客户端有感的。如果要做成无感的透明代理,需要向客户端推送自建的Root CA证书,在企业内部环境下是可实现的。为什么正向代理处理HTTPS流量需要特殊处理?作为反向代理时,代理服务器通常终结 (terminate) HTTPS加密流量,再转发给后端实例。HTTPS流量的加解密和认证过程发生在客户端和反向代理服务器之间。 而作为正向代理在处理客户端发过来的流量时,HTTP加密封装在了TLS/SSL中,代理服务器无法看到客户端请求URL中想要访问的域名,如下图。所以代理HTTPS流量,相比于HTTP,需要做一些特殊处理。 NGINX的解决方案根据前文中的分类方式,NGINX解决HTTPS代理的方式都属于透传(隧道)模式,即不解密不感知上层流量。具体的方式有如下7层和4层的两类解决方案。 HTTP CONNECT隧道 (7层解决方案)历史背景早在1998年,也就是TLS还没有正式诞生的SSL时代,主导SSL协议的Netscape公司就提出了关于利用web代理来tunneling SSL流量的INTERNET-DRAFT。其核心思想就是利用HTTP CONNECT请求在客户端和代理之间建立一个HTTP CONNECT Tunnel,在CONNECT请求中需要指定客户端需要访问的目的主机和端口。Draft中的原图如下: 整个过程可以参考HTTP权威指南中的图: 客户端给代理服务器发送HTTP CONNECT请求。代理服务器利用HTTP CONNECT请求中的主机和端口与目的服务器建立TCP连接。代理服务器给客户端返回HTTP 200响应。客户端和代理服务器建立起HTTP CONNECT隧道,HTTPS流量到达代理服务器后,直接通过TCP透传给远端目的服务器。代理服务器的角色是透传HTTPS流量,并不需要解密HTTPS。 NGINX ngx_http_proxy_connect_module模块NGINX作为反向代理服务器,官方一直没有支持HTTP CONNECT方法。但是基于NGINX的模块化、可扩展性好的特性,阿里的@chobits提供了ngx_http_proxy_connect_module模块,来支持HTTP CONNECT方法,从而让NGINX可以扩展为正向代理。 环境搭建以CentOS 7的环境为例。 1) 安装对于新安装的环境,参考正常的安装步骤和安装这个模块的步骤(https://github.com/chobits/ngx_http_proxy_connect_module)),把对应版本的patch打上之后,在configure的时候加上参数--add-module=/path/to/ngx_http_proxy_connect_module,示例如下: ./configure \--user=www \--group=www \--prefix=/usr/local/nginx \--with-http_ssl_module \--with-http_stub_status_module \--with-http_realip_module \--with-threads \--add-module=/root/src/ngx_http_proxy_connect_module对于已经安装编译安装完的环境,需要加入以上模块,步骤如下: # 停止NGINX服务# systemctl stop nginx# 备份原执行文件# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak# 在源代码路径重新编译# cd /usr/local/src/nginx-1.16.0./configure \--user=www \--group=www \--prefix=/usr/local/nginx \--with-http_ssl_module \--with-http_stub_status_module \--with-http_realip_module \--with-threads \--add-module=/root/src/ngx_http_proxy_connect_module# make# 不要make install# 将新生成的可执行文件拷贝覆盖原来的nginx执行文件# cp objs/nginx /usr/local/nginx/sbin/nginx# /usr/bin/nginx -Vnginx version: nginx/1.16.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)built with OpenSSL 1.0.2k-fips 26 Jan 2017TLS SNI support enabledconfigure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-threads --add-module=/root/src/ngx_http_proxy_connect_module2) nginx.conf文件配置 ...

June 24, 2019 · 5 min · jiezi

关闭-Apache-2418-TLSSSLProtocolApachesslconfTLS

本教学使用环境介绍伺服器端:Ubuntu 18.04 LTS资料库:Mariadb 10.1.34Apache:2.4.18语言版本:php 7.3本机端:MacOS High Sierra 前往 ssl.conf $ nano /etc/apache2/mods-available/ssl.conf这是 Apache 预设的设定 SSLProtocol all -SSLv3加入 -TLSv1 如以下代表關閉 TLS 1.0還有 -TLSv1.1, -TLSv1.2, -TLSv1.3 SSLProtocol all -SSLv3 -TLSv1重启 Apache $ service apache2 restart参考:https://blog.ijun.org/2017/10... 欢迎加QQ交流,在我个人档案

May 23, 2019 · 1 min · jiezi

使用openSSL构造一个支持https的nodejs服务器

首先通过下面的链接下载openSSLhttps://slproweb.com/products... 下载完毕后,执行openssl进入交互式界面: 使用命令生成privatekey.pem 1024意思是1024位长度。 openssl genrsa -out privatekey.pem 1024 生成的privatekey.pem,打开看一看长啥样: 什么是pem文件? .pem - Defined in RFCs 1421 through 1424, this is a container format that may include just the public certificate (such as with Apache installs, and CA certificate files /etc/ssl/certs), or may include an entire certificate chain including public key, private key, and root certificates. Confusingly, it may also encode a CSR (e.g. as used here) as the PKCS10 format can be translated into PEM. The name is from Privacy Enhanced Mail (PEM), a failed method for secure email but the container format it used lives on, and is a base64 translation of the x509 ASN.1 keys.简单的说,就是一个密钥文件。 ...

May 9, 2019 · 2 min · jiezi

SSL证书转换一关于JKS-转换成-CRT-和-KEY

[SSL证书转换(一)]关于JKS 转换成 CRT 和 KEY之前遇到个问题,客户做小程序系统,而小程序前后端交互需要https协议,因此就需要在后端nginx前置服务器配置SSL证书。而客户给的SSL证书,是Java版的jks证书;且客户提供的配置好基本环境的nginx,所需要的证书是crt和key组合形式,因此需要进行证书转换。在证书转换和证书配置过程中,以及后续的实际生产部署的过程中,也遇到了各种坑。[强烈建议,有钱的用户,或者省事的用户,使用云服务器,不要自建服务器,这样可以有免费的ssl证书,可以很简单的配置] 现在简单记录下配置的步骤:拿到jks证书,和证书密码(确认没有密码的,拿刀找你们运维去,或找供应方去)先将jks 转换成p12格式,具体命令如下:keytool -importkeystore -srckeystore C:\cert\server.jks -destkeystore C:\cert\server.p12 -srcstoretype jks -deststoretype pkcs12输入命令后,会提示你三步骤,需要输入口令(建议输入相同的口令,就是你的jks口令,防止后续证书转换忘记密码) 1).输入目标密钥库口令: 2).再次输入新口令: 3).输入源密钥库口令: 接下来就会提示你如下: 已成功导入别名 ca_root 的条目 已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消 到了这一步,说明已经OK了,剩下的就是转换成crt证书和key了 3.将p12转换成crt证书, 命令如下: openssl pkcs12 -in C:\cert\server.p12 -nokeys -clcerts -out C:\cert\server.crt4.将p12生成非加密的key, 命令如下:openssl pkcs12 -in C:\cert\server.p12 -nocerts -nodes -out C:\cert\server.key5.将证书配置到nginx以后,重启nginx服务器 6.使用ssl漏洞扫描工具,检验证书链的完整性,并获取证书链(<font color=red>防止小程序报: fail ssl hand shake error</font>),推荐地址https://myssl.com/chain_download.html 7.拷贝证书链以后,将服务器上server.crt内容替换,重启nginx(或nginx -s reload) 8.如果还不行,(比如:网页访问,依然不安全) 请清空缓存,刷新 ps : 至于以上的命令,比如: keytool、openssl哪里来?你问我?问我为什么不安装下呢?百度啊!

May 6, 2019 · 1 min · jiezi

X509PKCS文件格式介绍

ASN.1 - 数据结构描述语言引用自Wiki: ASN.1 is a standard interface description language for defining data structures that can be serialized and deserialized in a cross-platform way.也就是说ASN.1是一种用来定义数据结构的接口描述语言,它不是二进制,也不是文件格式,看下面的例子你就会明白了: FooQuestion ::= SEQUENCE { trackingNumber INTEGER, question IA5String}这段代码定义了FooQuestion的数据结构,下面是FooQuestion这个数据接口的某个具体的数据: myQuestion FooQuestion ::= SEQUENCE { trackingNumber 5, question "Anybody there?"}ASN.1用在很多地方比如下面要讲的X.509和PKCS group of cryptography standards。 文件编码格式DER编码格式引用自Wiki: ASN.1 is closely associated with a set of encoding rules that specify how to represent a data structure as a series of bytes意思是ASN.1有一套关联的编码规则,这些编码规则用来规定如何用二进制来表示数据结构,DER是其中一种。 ...

April 27, 2019 · 3 min · jiezi

Centos 7 配置Nginx-Aliyun ECS

Centos 7 配置Nginx,常用的nginx操作,启动/停止,代理,反向代理设置以及https ssl 443配置Linux查询nginx主进程号ps -ef | grep nginx启动/重启## 在nginx/sbin下执行命令 . (查看是否在 /usr/local/nginx/sbin)## 启动./nginx -c /usr/local/nginx/conf/nginx.conf## 重启./nginx -s reload停止## 从容停止Nginx:kill -QUIT 主进程号 ## 例如:kill -QUIT 16391## 快速停止Nginx:kill -TERM 主进程号 ## 强制停止Nginx:kill -9 主进程号 ## 停止nginxnginx -s stop代理/请求转发http { server { ### … listen 4000; server_name localhost; location / { root /Users/zhangguoye/Documents/Porject/Gitee/searchWX/src/main/internetapp; index index.html index.htm; } location /oauth/ { proxy_pass http://localhost:8080/oauth/; } location /api/ { proxy_pass http://localhost:8080/api/; } ### … }}443/SSL/未开启SSL模块安装模块切换到源码包:cd /usr/local/src/nginx-1.11.3查看nginx原有的模块/usr/local/nginx/sbin/nginx -V在configure arguments:后面显示的原有的configure参数如下:–prefix=/usr/local/nginx –with-http_stub_status_module那么我们的新配置信息就应该这样写:./configure –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module运行上面的命令即可,等配置完配置完成后,运行命令makes然后备份原有已安装好的nginxcp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)cp ./objs/nginx /usr/local/nginx/sbin/然后启动nginx,仍可以通过命令查看是否已经加入成功/usr/local/nginx/sbin/nginx -V配置Http和Https共存把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用server { listen 80 default backlog=2048; listen 443 ssl; server_name wosign.com; root /var/www/html; ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt; ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key; }配置SSL安全证书重启避免输入密码可以用私钥来做这件事。生成一个解密的key文件,替代原来key文件。openssl rsa -in server.key -out server.key.unsecureSSL性能调优ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;MAC (Brew Nginx)mac 使用homebrew安装Nginx,Nginx的位置与启动## 在mac上安装完nginx后的提示信息==> nginxDocroot is: /usr/local/var/wwwThe default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so thatnginx can run without sudo.nginx will load all files in /usr/local/etc/nginx/servers/.To have launchd start nginx now and restart at login: brew services start nginxOr, if you don’t want/need a background service you can just run: nginx## 查看nginx版本nginx -v## 启动nginx服务brew services start nginx## 关闭nginx服务brew services stop nginx## 重新加载nginxnginx -s reload## 停止nginxnginx -s stop ...

April 8, 2019 · 1 min · jiezi

???? 如何用 wireshark 抓包 TLS 封包

此前一篇文章用 wireshark 这个抓包工具调试了一下 HTTP 请求和响应。详细阐述了 TCP 连接和断开的整个过程。这篇文章尝试使用 wireshark 来抓取 TLS 封包,了解一下 HTTPS 请求和响应的整个过程。 ????懒得看全文的直接拉到最下看 TLS 流程的图片解释首先准备好 curl 和 wireshark,这些谷歌一下怎么安装。 ????HTTPS 是基于 TLS 之上的,如果没有目标的私钥是没办法解密的,如果直接使用 wireshark 是看不到 TLS 层加密的信息的。打开 wireshark 并开启抓包,在 curl 中发送一个请求:再 wireshark 输入 tls 过滤请求,疑似 ip 地址为目标网站输入该 ip 地址,确认是目标网站 httpbin,然后尝试查看返回的数据信息,因为 TLS 加密是看不到返回的 JSON 数据的因 TLS 使用的是迪菲 - 赫尔曼密钥交换生成对称密钥的加密算法,因此需要获取到一系列生成密钥的必要信息后才可生成密钥解密数据。先不着急怎么解决这个问题,首先回顾一下几个知识点,大概了解一下加密算法和 CA 数字证书和 TLS 加密流程:必要的几个知识点 ????加密算法 ????远古以前用的是对称加密,这种加密和解密的密钥是同一个,因此极为不安全,一旦其中一个密钥泄露,那么就会导致加密文件被破解后来发明了非对称加密,这种加密方式的逻辑就是公钥用来加密,私钥用来解密,一方使用另一方的公钥进行加密,传输密文给另一方,另一方再用私钥进行解密,这样没有拿到私钥就无法解密密文。但这种加密解密效率较低,后来就衍生出了混合加密,这种加密方式综合了非对称加密和对称加密。混合加密首先使用非对称加密生成对称密钥,然后再使用对称密钥进行数据安全传输,这样加密解密的效率要高得多了。TLS 用到的迪菲 - 赫尔曼就是其中的一种关于迪菲 - 赫尔曼密钥交换算法,这里简单提一下,这种算法有几个特点:密钥可以合成但不能分解合成后的密钥可以继续再合成合成后的密钥结果与合成顺序无关本质上是一种生成密钥算法这个算法的加密流程是这样的:A 和 B 想要交换并生成对称密钥A 将 P 发送给 BA 使用 P 和自己的私钥 SA 合成 PSAB 使用 P 和自己的私钥 SB 合成 PSB双方交换 PSA 和 PSBA 使用私钥 SA 与 PSB 合成 PSBSAB 使用私钥 SB 与 PSA 合成 PSASB这样对称密钥 PSASB 和 PSBSA 就合成完毕了,双方就可以使用这个对称密钥对传输的数据进行加密 ????⚠️ 问题是 A 将 P 发送给 B,B 如何确认 P 就是真的来自 A 的呢,而不是受到中间人攻击篡改了 P,这就需要使用 CA 认证了,只要有 CA 认证后的数字签名并且通过 CA 的公钥能够验证那么就可以确认 P 就是来自 A 的。数字证书 ????因此这里提一下 CA 证书也简单提一下原理:一个网站 A 想要获取数字证书,那么要走如下流程:A 将网站信息和公钥 PA 发送给 CA 认证机构CA 认证机构验证网站信息并用自己的私钥 SCA 加密生成数字签名,并回传给 AA 收到的数字签名中就包含了 A 的公钥 PA,那么其他人只需要通过 CA 认证机构的公钥即可认证解密数字签名,获取数字签名中的公钥 PA 了那么其他人就可以确定 PA 确实是来自 A 的这样 A 的公钥 PA 就可以被认为确实是来自 A 的,因为有 CA 签发的数字证书认证和背书。 ????⚠️ 还有一个问题是 CA 的公钥谁来认证呢?要是 CA 的公钥也被恶意替换了怎么办?那么就需要 CA 的 CA 来认证了,那么 CA 的 CA 的公钥谁来认证?根据这个逻辑,最后有一个 root CA,这个 CA 用来做最后的权威鉴定。TLS 加密流程 ????最后来回顾一下 TLS 的加密流程TLS 是建立在 TCP 基础上的,因此必定需要先三次 TCP 握手建立 TCP 连接,然后再是建立 TLSClient HelloClient Hello 报文:客户端对加密算法的支持度不同,因此需要向服务端发送客户端支持的 加密套件(Cipher Suite) ,同时还要生成一个 随机数 同时保存在客户端和发送给服务Server HelloServerCertificate 报文:服务端收到 Client Hello 之后,向客户端发送 CA 认证的数字证书,用来鉴别服务端身份信息,同时还要生成一个 随机数 同时保存在服务端和发送给客户端Server Hello Done 报文:表示服务端宣告第一阶段的客户端服务端握手协商结束可选:Certificate Request 报文:必要情况下,要求客户端发送证书验证身份可选:Server Key Exchange 报文:如果 CA 认证的数字证书提供的信息不够,服务端还可发送提供补充信息Client FinishClient Key Exchange 报文:客户端收到 CA 数字证书并通过验证,然后通过 CA 公钥解密获取到 服务端公钥。Client Key Exchange 报文包括有一个随机数,这个随机数被称为 Pre-master key/secret;一个表示随后的信息使用双方协商好的加密方法和密钥发送的 通知 ;还有一个通过协商好的 HASH 算法对前面所有信息内容的 HASH 计算值,用来提供服务端校验。这些信息都通过服务端公钥加密传送给服务端ClientCipherSpec 报文:该报文通知服务端,此后的通信都将使用协商好的加密算法计算对称密钥进行加密通信(也就是使用两个随机数以及第三个 Pre-master key/secret 随机数一起算出一个对称密钥 session key/secret)Finished 报文:该报文包括连接至此的所有报文的校验值,使用服务端公钥进行加密可选:ClientCertificate 报文:如果服务端请求,客户端需要发送 CA 数字证书可选:CertificateVerify 报文:服务端如果要求 CA 数字证书,那么需要通过 HASH 算法计算一个服务端发送来的信息摘要Server Finish服务端最后对客户端发送过来的 Finished 报文使用服务端私钥进行解密校验ClientCipherSpec 报文:报文通知服务端,此后的通信都将使用协商好的加密算法计算对称密钥 session key/secret 进行加密通信Finished 报文:标志 TLS 连接建立成功TLS 握手成功此后通过对称密钥 session key/secret 加密通信以上,我们看到生成的两个随机数和 Pre-master key 一起计算生成 session key 就是通过上文中提到过的迪菲 - 赫尔曼密钥交换算法实现的。客户端收到 CA 数字证书获取到服务端公钥进行加密,也符合上文中提到的 CA 认证流程。服务端私钥解密客户端使用服务端公钥加密,在上文中的非对称密钥部分也进行了讲解。因此 TLS 是一个运用到多种认证、加密的安全传输技术。除此之外,上文中没有提到的使用 HASH 计算的目的则是为了防止数据遭到篡改,这跟我们大家在网上下载软件,计算 md5 校验是一个原理。⚠️ 如有不正确的地方,各位请在评论区指正谢谢最后抓包验证上述加密流程 ????首先上文提到过 wireshark 直接抓取 TLS 的封包是没办法看到解密后的数据的,那么我们需要通过一些手段获取到解密后的数据那么如何才能解密获取数据呢,这里有篇文章可以看看 https://jimshaver.net/2015/02...It turns out that Firefox and Chrome both support logging the symmetric session key used to encrypt TLS traffic to a file. You can then point Wireshark at said file and presto! decrypted TLS traffic.原理是浏览器会在系统中存在名为 SSLKEYLOGFILE 的环境变量已经设置的情况下,将每个 HTTPS 连接产生的客户端或服务端的随机数、preMasterSecret、MasterSecret 全部获取到并保存在这个环境变量指定的文件中。配置环境变量 ????开始动手实操,这里用的是 windows 系统,我们配置环境变量:配置完成,这样浏览器就会写入密钥信息到指定路径的文件中至于 macOS/Linux 自己谷歌一下如何设置环境变量,很简单不再赘述配置 wireshark ????打开 wireshark,点击配置信息指定 TLS 的 Pre-master key 路径为环境变量指定的那个文件路径这样配置就算完成了,我们尝试一下打开 chrome 浏览器访问一个 https 网址:这里访问了百度的首页,可以看到 wireshark 展现的已经是解密后的数据了开始抓包分析 TLS 握手流程 ????然后打开终端使用 curl 发送一个 https 请求还是以 httpbin 为例,过滤 http 查看 wireshark 的结果:右键 follow 一下这就是整个 TCP 建立到 TLS 握手再到 HTTP 请求响应以及 TCP 断开的整个过程,我们逐一分析一下:TCP 的此前文章已经说过了,这里也不再提了,直接看 TLS 部分:Client HelloClient Hello 阶段,客户端给服务端发送一个随机数,以及 Cipher Suites 客户端支持的所有加密套件Server HelloServer Hello 阶段,服务端给客户端发送一个随机数,以及选中的 Cipher Suite 加密套件然后服务端继续发送给客户端 CA 数字证书以及 Server Key Exchange 和 Hello done 信息完成第一阶段的握手:这个是证书:这个是 Server Key Exchange,可以看到协商了一种加密算法:这个是 Server Hello Done:Client Finish客户端发送一个 Client Key Exchange,Change Cipher Spec 和 Finished 报文Finished Verify Data 包括至此连接的所有报文的校验信息,用服务端提供的公钥加密客户端准备好切换为对称密钥加密Server Finish最后服务端返回一个 Change Cipher Spec 和 Server Finish服务端准备好切换为对称密钥加密TLS 握手成功至此,TLS 握手成功,在 wireshark 中就可以看到接下来就是 HTTP 的请求响应封包了:图片解释 ????最后画了个简化版的脑图方便理解:⚠️ 如有不正确的地方,各位请在评论区指正谢谢请关注我的订阅号,不定期推送有关 JS 的技术文章,只谈技术不谈八卦 ???? ...

April 2, 2019 · 2 min · jiezi

如何在Tomcat中做TLS客户端认证

常见的https网站做的是服务端认证(server authentication),浏览器通过证书判断你所访问的https://baidu.com是否真的是百度,而不是其他人伪造的网站。同时还对流量加密,防止别人窃听你的流量。tls还可以做客户端认证(client authentication),即服务端判断客户端是否为其所信任的客户端。由此可见,客户端认证用于那些需要受控访问服务端。在数据中心中,有些服务是非常敏感的,那么我们要做到:客户端和我的流量是加密的,防止别人监听客户端能够确认所访问的服务端的确是我们提供的服务端,而不是别人伪造的服务端只有我信任的客户端可以访问我,防止恶意请求所以很明显,前两个问题可以通过服务端认证解决,最后一个问题可以通过客户端认证解决。顺便一提,如果要使用客户端认证就必须使用服务端认证。先来讲讲概念然后举个tomcat的例子讲讲怎么做。概念服务端认证不论是做Server authentication还是Client authentication都需要证书。证书的来源有两种:由权威CA签发,一般都是去购买。也可以使用let’s encrypt申请免费证书。自己签发在一切可能的情况下都应该使用权威CA签发的证书,为什么这么建议?因为这里牵涉到一个信任问题,浏览器、编程语言SDK和某些工具都维护了一个信任CA证书清单,只要是由这些CA签发的证书那就信任,否则就不信任。而这个链条是可以多级的,这里就不展开了。你只需要知道由信任CA签发的所有证书都是可信的。比如JDK自带的信任CA证书可以通过下面命令看到:keytool -list -keystore $JAVA_HOME/jre/lib/security/cacertsverisignclass2g2ca [jdk], 2016-8-25, trustedCertEntry,证书指纹 (SHA1): B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9Ddigicertassuredidg3 [jdk], 2016-8-25, trustedCertEntry,证书指纹 (SHA1): F5:17:A2:4F:9A:48:C6:C9:F8:A2:00:26:9F:DC:0F:48:2C:AB:30:89verisignuniversalrootca [jdk], 2016-8-25, trustedCertEntry,…让你输密码的时候输入changeit。如果这个证书不是由信任CA签发的(比如自己签发)会发生什么?浏览器、编程语言SDK、你所使用的工具会报告以下错误:curl:curl: (60) SSL certificate problem: self signed certificate in certificate chainJava:Exception in thread “main” javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1614)…浏览器:这个错误实际上就是在告诉你这个证书不可信任,可能是一个伪造站点,让你小心点儿。如果这个证书由权威CA签发,那么就没有这个问题了。但是权威CA签发的证书要求申请人拥有域名,如果你这个服务是内部使用的没有域名,那就只能自己签发了。那么如何解决上面的问题呢?你得把自己签发的证书加入到信任CA证书清单里。下图是权威CA签发证书的示例:可以看到客户端有一个truststore,这个就是存放信任CA证书的地方,服务端有一个keystore,存放的自己的证书及对应的私钥。下图是自签发证书的示例:在上面可以看到我们自己成为了一个Root CA,把它放到客户端的truststore里。客户端认证前面讲过客户端认证是服务端来验证客户端是否可信的机制,其实做法和服务端认证类似只不过方向相反。客户端认证大多数情况下只能是自签发的(因为没有域名),虽然不是不可以从权威CA签发但是存在一些问题。下面解释为什么,假设权威CA是let’s encrypt,然后服务端信任它签发的所有证书。但是let’s encrypt是阿猫阿狗都可以申请的,现在有一个黑客申请了这个证书,然后请求你的服务端,服务端就认可了。上面这个问题可以用这个方法解决:比如你用let’s encrypt申请了A证书,黑客用let’s encrypt申请了B证书,你的服务端的truststore只信任A证书,那么黑客用B证书访问你的时候就会被拒绝。但是这就带来另一个问题,比如你在开发的时候客户端证书有这么几套:生产用、调试用、开发用,那么每次客户端签发一个证书都要更新到你的服务器的truststore里,这也太麻烦了。所以结合安全性和便利性,我们把自己变成Root CA,然后服务端信任它,这样一来服务端就可以在开发的时候把Client Root CA内置进去,大大减轻了维护truststore的工作量,看下图:用Tomcat举个例子下面举一个Tomcat做客户端认证的例子,因为是测试用,所以服务端认证也是用的自签发证书。我们用了cfssl这个工具来生成证书。服务端先弄一套目录:# 放自签发的服务端CA根证书server-secrets/ca# 放自签发的服务端的证书server-secrets/cert# 放服务端的keystore和truststoreserver-secrets/jks生成自签名CA证书新建文件:server-secrets/ca/server-root-ca-csr.json内容如下:{ “key”: { “algo”: “rsa”, “size”: 2048 }, “names”: [ { “O”: “Company”, “OU”: “Datacenter”, “L”: “Shanghai”, “ST”: “Shanghai”, “C”: “CN” } ], “CN”: “server-root-ca”}运行下面命令生成Server ROOT CA证书:cfssl gencert –initca=true ./server-root-ca-csr.json | cfssljson –bare server-root-ca会得到下面几个文件:server-secrets/ca/├── server-root-ca-key.pem├── server-root-ca.csr└── server-root-ca.pem用下面命令验证证书:openssl x509 -in ./server-root-ca.pem -text -nooutCertificate: Data: Version: 3 (0x2) Serial Number: 0c:8a:1a:ca:da:fa:4c:17:6c:1f:42:40:4c:f1:90:f4:fd:1d:fe:58 Signature Algorithm: sha256WithRSAEncryption Issuer: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=server-root-ca Validity Not Before: Mar 27 05:14:00 2019 GMT Not After : Mar 25 05:14:00 2024 GMT Subject: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=server-root-ca可以看到签发人和被签发人是同一个。生成自签发证书新建文件 server-secrets/cert/server-gencert.json,内容如下:{ “signing”: { “default”: { “usages”: [ “signing”, “key encipherment”, “server auth” ], “expiry”: “87600h” } }}可以看到我们会生成用来做server auth的证书。新建文件 server-secrets/cert/demo-csr.json,内容如下:{ “key”: { “algo”: “rsa”, “size”: 2048 }, “names”: [ { “O”: “Company”, “OU”: “Datacenter”, “L”: “Shanghai”, “ST”: “Shanghai”, “C”: “CN” } ], “CN”: “server-demo”, “hosts”: [ “127.0.0.1”, “localhost” ]}看上面的hosts,你可以根据自己的需要填写域名或IP,这里因为是本地演示所以是127.0.0.1和localhost。运行下面命令生成证书cfssl gencert \ –ca ../ca/server-root-ca.pem \ –ca-key ../ca/server-root-ca-key.pem \ –config ./server-gencert.json \ ./demo-csr.json | cfssljson –bare ./demo得到文件:server-secrets/cert/├── demo-key.pem├── demo.csr└── demo.pem验证结果:openssl x509 -in ./demo.pem -text -nooutCertificate: Data: Version: 3 (0x2) Serial Number: 1d:d0:51:97:6c:ce:ea:29:2a:f4:3b:3c:48:a3:69:b0:ef:f3:26:7b Signature Algorithm: sha256WithRSAEncryption Issuer: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=server-root-ca Validity Not Before: Mar 27 05:17:00 2019 GMT Not After : Mar 24 05:17:00 2029 GMT Subject: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=server-demo可以看到签发者是server-root-ca,Subject是server-demo。将证书导入keystore到 server-secrets/jks,执行下面命令生成pkcs12格式的keystore(JDK识别这个格式)openssl pkcs12 -export \ -in ../cert/demo.pem \ -inkey ../cert/demo-key.pem \ -out server-demo.keystore \ -name server-demo \ -CAfile ../ca/server-root-ca.pem \ -caname root -chain过程中会让你输入密码,你就输入:server-demo-ks。得到文件:server-secrets/jks/└── server-demo.keystore用JDK提供的keytool看看里面的内容:keytool -list -keystore server-demo.keystoreserver-demo, 2019-3-27, PrivateKeyEntry,证书指纹 (SHA1): B2:E5:46:63:BB:00:E7:82:48:A4:2F:EC:01:41:CE:B4:4B:CE:68:7A让你输入密码的时候就输入:server-demo-ks。客户端先弄一套目录:# 放自签发的客户端CA根证书client-secrets/ca# 放自签发的客户端的证书client-secrets/cert# 放客户端的keystore和truststoreclient-secrets/jks生成自签名CA证书新建文件 client-secrets/ca/client-root-ca-csr.json:{ “key”: { “algo”: “rsa”, “size”: 2048 }, “names”: [ { “O”: “Company”, “OU”: “Datacenter”, “L”: “Shanghai”, “ST”: “Shanghai”, “C”: “CN” } ], “CN”: “client-root-ca”}运行下面命令生成Client ROOT CA证书:cfssl gencert –initca=true ./client-root-ca-csr.json | cfssljson –bare client-root-ca会得到下面几个文件:client-secrets/ca/├── client-root-ca-key.pem├── client-root-ca.csr└── client-root-ca.pem用下面命令验证证书:openssl x509 -in ./client-root-ca.pem -text -nooutCertificate: Data: Version: 3 (0x2) Serial Number: 7e:fc:f3:53:07:1a:17:ae:24:34:d5:1d:00:02:d6:e4:24:09:92:12 Signature Algorithm: sha256WithRSAEncryption Issuer: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=client-root-ca Validity Not Before: Mar 27 05:20:00 2019 GMT Not After : Mar 25 05:20:00 2024 GMT Subject: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=client-root-ca可以看到签发人和被签发人是同一个。生成自签发证书新建文件 client-secrets/cert/client-gencert.json,内容如下:{ “signing”: { “default”: { “usages”: [ “signing”, “key encipherment”, “client auth” ], “expiry”: “87600h” } }}可以看到我们会生成用来做client auth的证书。新建文件 client-secrets/cert/demo-csr.json,内容如下:{ “key”: { “algo”: “rsa”, “size”: 2048 }, “names”: [ { “O”: “Company”, “OU”: “Datacenter”, “L”: “Shanghai”, “ST”: “Shanghai”, “C”: “CN” } ], “CN”: “client-demo”}这里没有hosts,这是因为我们不需要用这个证书来做服务端认证。运行下面命令生成证书cfssl gencert \ –ca ../ca/client-root-ca.pem \ –ca-key ../ca/client-root-ca-key.pem \ –config ./client-gencert.json \ ./demo-csr.json | cfssljson –bare ./demo得到文件:client-secrets/cert/├── demo-key.pem├── demo.csr└── demo.pem验证结果:openssl x509 -in ./demo.pem -text -nooutCertificate: Data: Version: 3 (0x2) Serial Number: 6e:50:e2:2c:02:bb:ef:fd:03:d9:2c:0a:8f:ba:90:65:fb:c4:b5:75 Signature Algorithm: sha256WithRSAEncryption Issuer: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=client-root-ca Validity Not Before: Mar 27 05:21:00 2019 GMT Not After : Mar 24 05:21:00 2029 GMT Subject: C=CN, ST=Shanghai, L=Shanghai, O=Company, OU=Datacenter, CN=client-demo可以看到签发者是client-root-ca,Subject是client-demo。将证书导入keystore到 client-secrets/jks,执行下面命令生成pkcs12格式的keystore(JDK识别这个格式)openssl pkcs12 -export \ -in ../cert/demo.pem \ -inkey ../cert/demo-key.pem \ -out client-demo.keystore \ -name client-demo \ -CAfile ../ca/client-root-ca.pem \ -caname root -chain过程中会让你输入密码,你就输入:client-demo-ks。得到文件:client-secrets/jks/└── client-demo.keystore用JDK提供的keytool看看里面的内容:keytool -list -keystore client-demo.keystoreclient-demo, 2019-3-27, PrivateKeyEntry,证书指纹 (SHA1): 83:AE:0E:5E:0C:CE:86:C9:D1:84:D7:6F:87:F3:76:1F:B4:3E:46:31让你输入密码的时候就输入:client-demo-ks。两端互信好了,到此为止server和client的证书都已经生成了,接下来只需要将各自的root-ca添加到彼此都truststore中。把server-root-ca导入到client的truststore中cd client-secrets/jkskeytool -importcert \ -alias server-root-ca \ -storetype pkcs12 \ -keystore client.truststore \ -storepass client-ts \ -file ../../server-secrets/ca/server-root-ca.pem -noprompt注意上面的-storepass参数,这个是trustore的密码:client-ts。得到文件:client-secrets/jks/└── client.truststore用JDK提供的keytool看看里面的内容:keytool -list -keystore client.truststoreserver-root-ca, 2019-3-27, trustedCertEntry,证书指纹 (SHA1): 75:E3:78:97:85:B2:29:38:25:3C:FD:EC:68:97:9B:78:A0:5F:BB:9D让你输入密码的时候就输入:client-ts。把client-root-ca导入到server的truststore中cd server-secrets/jkskeytool -importcert \ -alias client-root-ca \ -storetype pkcs12 \ -keystore server.truststore \ -storepass server-ts \ -file ../../client-secrets/ca/client-root-ca.pem -noprompt注意上面的-storepass参数,这个是trustore的密码:server-ts。得到文件:server-secrets/jks/└── server.truststore用JDK提供的keytool看看里面的内容:keytool -list -keystore server.truststoreclient-root-ca, 2019-3-27, trustedCertEntry,证书指纹 (SHA1): 1E:95:2C:12:AA:7E:6D:E7:74:F1:83:C2:B8:73:6F:EE:57:FB:CA:46让你输入密码的时候就输入:server-ts。配置Tomcat好了,我们现在client和server都有了自己证书放在了自己的keystore中,而且把彼此的root-ca证书放到了自己的truststore里。现在我们弄一个tomcat作为server,然后为他配置SSL。修改tomcat/conf/server.xml,添加如下Connector:<Connector port=“8443” protocol=“org.apache.coyote.http11.Http11NioProtocol” maxThreads=“150” SSLEnabled=“true”> <SSLHostConfig certificateVerification=“required” truststoreFile="/path/to/server-secrets/jks/server.truststore" truststorePassword=“server-ts” truststoreType=“PKCS12”> <Certificate certificateKeyAlias=“server-demo” certificateKeystoreFile="/path/to/server-secrets/demo-jks/server-demo.keystore" certificateKeystoreType=“PKCS12” certificateKeystorePassword=“server-demo-ks” type=“RSA” /> </SSLHostConfig></Connector>可以看到我们开启了客户端认证certificateVerification=“required”,也开启了服务端认证<Certificate>。记得修改上面的keystore和truststore的路径。修改tomcat/conf/web.xml,添加如下元素:<security-constraint> <web-resource-collection> <web-resource-name>Automatic Forward to HTTPS/SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint></security-constraint>这个作用是当访问8080端口时,都跳转到8443端口,强制走HTTPS。启动tomcat:tomcat/bin/catalina.sh run用curl测试好了,我们现在用curl来测试访问一下:curl https://localhost:8443/curl: (60) SSL certificate problem: self signed certificate in certificate chain…看到curl说服务端用的是一个自签发的证书,不可信,也就是说服务端认证失败。添加–insecure试试:curl –insecure https://localhost:8443/curl: (35) error:1401E412:SSL routines:CONNECT_CR_FINISHED:sslv3 alert bad certificate这里就说明客户端认证失败。所以如果要正确访问得像下面这样,指定server-root-ca证书,以及客户端自己签发的证书及private key:curl –cacert server-secrets/ca/server-root-ca.pem \ –key client-secrets/cert/demo-key.pem \ –cert client-secrets/cert/demo.pem \ https://localhost:8443/<!DOCTYPE html><html lang=“en”>…Httpclient测试我们现在用Httpclient来访问看看。pom.xml中添加依赖:<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.7</version></dependency>Java代码,记得把文件路径改掉:import org.apache.http.HttpEntity;import org.apache.http.HttpException;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.ssl.SSLContexts;import org.apache.http.util.EntityUtils;import javax.net.ssl.SSLContext;import java.io.File;import java.io.IOException;public class Client { public static void main(String[] args) throws Exception { SSLContext sslcontext = SSLContexts.custom() .loadTrustMaterial( new File("/path/to/client-secrets/demo-jks/client.truststore"), “client-ts”.toCharArray() ) .loadKeyMaterial( new File("/path/to/client-secrets/demo-jks/client-demo.keystore"), “client-demo-ks”.toCharArray(), “client-demo-ks”.toCharArray()) .build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( sslcontext, SSLConnectionSocketFactory.getDefaultHostnameVerifier()); CloseableHttpClient httpclient = HttpClients.custom() .setSSLSocketFactory(sslsf) .build(); HttpGet httpGet = new HttpGet(“https://localhost:8443”); CloseableHttpResponse response = httpclient.execute(httpGet); try { System.out.println(response.getStatusLine()); HttpEntity entity = response.getEntity(); System.out.println(EntityUtils.toString(entity)); } finally { response.close(); } }}安全性考虑所有private key都很重要!如果它被泄漏了,就要回收它所对应都证书。如果CA的private key泄漏了,那么用它签发的所有证书都要被回收。keystore和truststore的密码设置的要复杂一些。关于反向代理因为服务端认证所需要的证书直接配置在Tomcat上的,因此在做反向代理的时候不能使用SSL Termination模式,而是得使用SSL Passthrough模式。其他语言、SDK、工具上面讲的方法不是只适用于Tomcat和Httpclient的,TLS的服务端认证与客户端认证应该在绝大部分的语言、SDK、类库都有支持,请自行参阅文档实践。文中的keystore和truststore是Java特有的,不过不必迷惑,因为它们仅仅起到一个存放证书和private key的保险箱,有些语言或工具则是直接使用证书和private key,比如前面提到的curl。参考资料cfsslSSL/TLS Configuration HOW-TOSSL SupportCONFIGURING TOMCAT SSL CLIENT/SERVER AUTHENTICATION,这篇文章有点古老了,server.xml的配置方式已经不一样了,仅供参考。ClientCustomSSL.javaJSSE Reference Guide一些基础概念:Basics of Digital Certificates and Certificate Authority,基础概念,挺重要Create Your Own Certificate and CA,这篇文章挺重要的,主要讲了如何使用keytool和openssl来生成证书的过程Introducing TLS with Client AuthenticationThe magic of TLS, X509 and mutual authentication explained其他运用客户端认证的软件的相关文档,很有启发:Etcd - Play etcd TLS部分Etcd - Example 2: Client-to-server authentication with HTTPS client certificatesCoreos - Generate self-signed certificates ...

March 28, 2019 · 4 min · jiezi

nginx 代理服务器配置双向证书验证

生成证书链用脚本生成一个根证书, 一个中间证书(intermediate), 三个客户端证书.脚本来源于(有修改)https://stackoverflow.com/que…中间证书的域名为 localhost.#!/bin/bash -xset -efor C in echo root-ca intermediate; do mkdir $C cd $C mkdir certs crl newcerts private cd .. echo 1000 > $C/serial touch $C/index.txt $C/index.txt.attr echo ‘[ ca ]default_ca = CA_default[ CA_default ]dir = ‘$C’ # Where everything is keptcerts = $dir/certs # Where the issued certs are keptcrl_dir = $dir/crl # Where the issued crl are keptdatabase = $dir/index.txt # database index file.new_certs_dir = $dir/newcerts # default place for new certs.certificate = $dir/cacert.pem # The CA certificateserial = $dir/serial # The current serial numbercrl = $dir/crl.pem # The current CRLprivate_key = $dir/private/ca.key.pem # The private keyRANDFILE = $dir/.rnd # private random number filenameopt = default_cacertopt = default_capolicy = policy_matchdefault_days = 365default_md = sha256[ policy_match ]countryName = optionalstateOrProvinceName = optionalorganizationName = optionalorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional[req]req_extensions = v3_reqdistinguished_name = req_distinguished_name[req_distinguished_name][v3_req]basicConstraints = CA:TRUE’ > $C/openssl.confdoneopenssl genrsa -out root-ca/private/ca.key 2048openssl req -config root-ca/openssl.conf -new -x509 -days 3650 -key root-ca/private/ca.key -sha256 -extensions v3_req -out root-ca/certs/ca.crt -subj ‘/CN=Root-ca’openssl genrsa -out intermediate/private/intermediate.key 2048openssl req -config intermediate/openssl.conf -sha256 -new -key intermediate/private/intermediate.key -out intermediate/certs/intermediate.csr -subj ‘/CN=localhost.‘openssl ca -batch -config root-ca/openssl.conf -keyfile root-ca/private/ca.key -cert root-ca/certs/ca.crt -extensions v3_req -notext -md sha256 -in intermediate/certs/intermediate.csr -out intermediate/certs/intermediate.crtmkdir outfor I in seq 1 3 ; do openssl req -new -keyout out/$I.key -out out/$I.request -days 365 -nodes -subj “/CN=$I.example.com” -newkey rsa:2048 openssl ca -batch -config root-ca/openssl.conf -keyfile intermediate/private/intermediate.key -cert intermediate/certs/intermediate.crt -out out/$I.crt -infiles out/$I.requestdone服务器nginx 配置worker_processes 1;events { worker_connections 1024;}stream{ upstream backend{ server 127.0.0.1:8080; } server { listen 8888 ssl; proxy_pass backend; ssl_certificate intermediate.crt; ssl_certificate_key intermediate.key; ssl_verify_depth 2; ssl_client_certificate root.crt; ssl_verify_client optional_no_ca; }}客户端curl \ -I \ -vv \ -x https://localhost:8888/ \ –proxy-cert client1.crt \ –proxy-key client1.key \ –proxy-cacert ca.crt \ https://www.baidu.com/ ...

January 31, 2019 · 2 min · jiezi

Weblogic 12版本以下服务器如何调整SSL协议和加密套件

Weblogic SSL证书部署 、 SSL证书申请注:请认真细读里面的每个步骤。针对不同系统安装的weblogic 需要调整不同的启动文件,此目的是为了提示低版本的weblogic可以支持TLS1.0以上安全协议和提升安全加密套件而制作。注意:首先要额外(Windows:安装jdk新的版本)或是(Linux或centos:编译安装jdk新版本)。然后记住安装编译的路径。Windows 版本weblogic1:根据您安装weblogic目录和您创建用户的账户路径而定:我的测试环境如下例如:1.1:(C:OracleMiddlewareuser_projectsdomainszzidc.com)我的账户目录。1.2:来到账户中的(bin)目录中。1.3:修改前备份好原始文件(必需做的一步,以防万一。可以恢复原始)。找到此文件 “setDomainEnv.cmd”(linux环境修改setDomainEnv.sh)用记事本打开,接着找到里面set WL_HOME 的参数段,如下: 保存重启即可。1.4:最后通过openssl 来测试是否已经启用了TLS1.0以上的安全协议,可以运用此命令:首先你得有Openssl的插件目录(我的环境:D:OpenSSL-Win64bin>。Linux下也可以检测)通过命令定位到openssl的bin路径下。1.5:输入命令:openssl s_client -connect test.yibaomd.com:443 –status红色部分可以换成你的IP或是域名。执行结果:如图提示:Protocol: TLSv1.2 就说明指定替换成功。1.6:以上为安全协议已经是调整为最佳状态。接下来就是要调整加密套件。可以参考此路径中的tomcat7方案进行调整:https://bbs.wosign.com/forum….1.7:同样:首先到您的账户目录中的config的目录中找到:config.xml的配置文件用记事本打开:找到到“<SSL></SSL>”的节点。加入红色的套件(以下为测试环境加密套件仅作参考)如需额外根据环境调整请参考上诉提供的BBS论坛中的自行调整。<ssl><enabled>true</enabled><ciphersuite>TLS_RSA_WITH_AES_128_CBC_SHA</ciphersuite><ciphersuite>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</ciphersuite><ciphersuite>TLS_RSA_WITH_AES_128_CBC_SHA256</ciphersuite><ciphersuite>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</ciphersuite><hostname-verification-ignored>true</hostname-verification-ignored>。。</ssl>最好保存1.8:调整加密套件后就需要测试是否真正达到和提升服务器安全需要通过扫描工具进行扫描:https://wosign.ssllabs.com/ 扫描的域名必须默认443端口:如下图:未调整前结果:调整后结果:大功告成。。。。。。。。。。。。。沃通技术支持原创文章,转载请注明来源

January 22, 2019 · 1 min · jiezi

SSL加密与分布式IM系统-InChat1.1.3版本试用说明

本文首发于本博客 猫叔的博客,转载请申明出处2019年1月15号-InChat发布V1.1.3版本InChat一个轻量级、高效率的支持多端(应用与硬件Iot)的异步网络应用通讯框架v1.1.3版本使用说明v1.1.0-alpha版本使用说明InChatV1.1.2版本使用说明历史更新说明1.1.2版本捕获未注册链接断开异常,完善异常处理修改项目启动流程,仿Selector启动模式添加HTTP接口三个:发送通知消息,获取在线用户数,获取在线用户列表,暂不支持用户自定义HTTP接口(对于传统web API我们希望用户用自己的框架与流程)服务端发送通知接口改为enum处理1.1.3版本添加SSL加密,实现https与wss功能接受用户自定义证书(浏览器信任与不信任均可以访问)InChat配置可改为分布式或着单机版引入Redis,处理集群信息与消息互通如果有生产需要或者个别需求,发现BUG,欢迎留言,项目会更新新的API关于InChat的Maven依赖fastjson 》 1.2.53gson 》 2.8.5netty 》 4.1.32.Finalcommons-lang 》 3.5slf4j-log4j12 》 1.7.25jedis 》 3.0.1创建项目创建一个空的Maven项目,并引入InChatMaven包,(注意,请不要使用与本项目相同的包目录)。可能你只需要这样的Maven依赖即可<dependencies> <dependency> <groupId>com.github.UncleCatMySelf</groupId> <artifactId>InChat</artifactId> <version>1.1.3</version> </dependency></dependencies>对接InChat的接口与实现InChat启动参数可以自配置你只需要继承InChat的默认配置类InitNetty即可,如下public class MyInit extends InitNetty { /** 自定义启动监听端口 / @Override public int getWebport() { return 8090; } /* 是否启动分布式 true-启动、false-不启动 / @Override public Boolean getDistributed() { return true; } /* 是否启动加密功能 */ @Override public boolean isSsl() { return true; }}请注意,分布式为测试版,所以暂不支持SSL加密,如果启动分布式请关闭SSL加密功能如何自定义证书?#keytool -genkey -keysize 2048 -validity 365 -keyalg RSA -dnam e “CN=in-chat.cn” -keypass 123456 -storepass 123456 -keystore inchat.jkskeytool为JDK提供的生成证书工具keysize 2048 密钥长度2048位(这个长度的密钥目前可认为无法被暴力破解)validity 365 证书有效期365天keyalg RSA 使用RSA非对称加密算法dname “CN=gornix.com” 设置Common Name为gornix.com,这是我的域名keypass 654321 密钥的访问密码为123456storepass 123456 密钥库的访问密码为123456(其实这两个密码也可以设置一样,通常都设置一样,方便记)keystore gornix.jks 指定生成的密钥库文件为inchat.jks如果你试着自己创建了自己的证书,那么你需要去重写InitNetty中的几个信息:jksFile,jksStorePassword,jksCertificatePassword。你的jks文件只需要放到resources目录下就好,两个密码就是你之前设定相同的密码。本项目已经提供了默认的inchat.jks,请用户在Maven包中复制并粘贴到自己的项目中的resources文件夹中即可。获取聊天消息数据此接口与原先一样,仅修改了方法名public class DataBaseServiceImpl implements InChatToDataBaseService { @Override public Boolean writeMessage(InChatMessage message) { System.out.println(message.toString()); return true; }}登录校验与群聊消息此接口没有做过多的修改public class VerifyServiceImpl implements InChatVerifyService { @Override public boolean verifyToken(String token) { return true; } @Override public JSONArray getArrayByGroupId(String groupId) { JSONArray jsonArray = JSONArray.parseArray("["1111","2222","3333"]"); return jsonArray; }}服务端发送通知消息枚举类此接口具有Demo模板,用户需要继承InChat框架的FromServerService接口,同时该接口注释也有实例demo,我们需要实现一个自定义的枚举,你可以这样写:public enum FromServerServiceImpl implements FromServerService { //你可以自定义自己的系统消息,请以Integer-String的形式 TYPE1(1,"【系统通知】您的账号存在异常,请注意安全保密信息。"), TYPE2(2,"【系统通知】恭喜您连续登录超过5天,奖励5积分。"); private Integer code; private String message; FromServerServiceImpl(Integer code, String message){ this.code = code; this.message = message; } public Integer getCode() { return code; } //实现接口的方法,遍历本枚举的code,获取对应的消息,作为系统消息发送 public String findByCode(Object code) { Integer codes = (Integer)code; for (FromServerServiceImpl item: FromServerServiceImpl.values()) { if (item.code == codes){ return item.message; } } return null; } public void setCode(Integer code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; }}启动项目1.1.3版本的启动项目变得异常的简单,你只需要配置启动的配置工厂即可。但是如果我们启动了分布式的话,我们还需要配置redis信息。public class application { public static void main(String[] args) { //配置你的自定义配置 ConfigFactory.initNetty = new MyInit(); //配置校验类 ConfigFactory.inChatVerifyService = new VerifyServiceImpl(); //配置消息接收处理类 ConfigFactory.inChatToDataBaseService = new DataBaseServiceImpl(); //配置服务端系统消息枚举,这里的值无所谓 TYPE1或者TYPE2或者TYPEN均可以 ConfigFactory.fromServerService = FromServerServiceImpl.TYPE1; //配置分布式Redis地址,端口目前默认的,下一版可以支持修改。 ConfigFactory.RedisIP = “192.168.192.132”; //启动InChat InitServer.open(); }}项目效果启动成功DEBUG - -Dio.netty.threadLocalDirectBufferSize: 0DEBUG - -Dio.netty.maxThreadLocalCharBufferSize: 16384 INFO - 服务端启动成功【192.168.56.1:8090】 INFO - [RedisConfig.getJedis]:连接成功,测试连接PING->PONG如果你开通了分布式,那么你可以试着启动两个应用程序。DEBUG - -Dio.netty.threadLocalDirectBufferSize: 0DEBUG - -Dio.netty.maxThreadLocalCharBufferSize: 16384 INFO - 服务端启动成功【192.168.56.1:8070】 INFO - [RedisConfig.getJedis]:连接成功,测试连接PING->PONG读者可以到项目中使用原来的两个前端页面。分别登录两个用户在两个应用程序,并进行互相通信即可。启动分布式请关闭SSL,分布式为测试版,暂不支持SSL目前,分布式版本接通了点对点与群聊的功能,大家可以试试。下一版本会添加一个分布式的组件用来统一数据与接口功能。关于加密的,请提前让电脑认同信任证书关于分布式的操作效果关于HTTP接口的,目前与分布式无关原先的自我发送,点对点发送,群聊,异常处理,HTTP接口均与原来一样原先的接口说明可以看上一版本: InChatV1.1.2版本使用说明前端相关这里你可以来到InChat的Front-End-Testing文档夹中的chat.html。你可以直接使用,你进需要修改对应的对接IP即可。如果你开了SSL加密,你的IP开头记得改为:wss://192.168.1.121:8090/ws !!!前端可以看原来的版本: InChatV1.1.2版本使用说明关于数据库设计当前一版不会固定大家的数据库设计,大家可以自己自由设计,同时搭上自己的项目,构建一个附带IM的自项目。公众号:Java猫说现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。 ...

January 15, 2019 · 2 min · jiezi

nginx docker容器配置https(ssl)

证书生成首先需要有https的证书文件,如果你已经向证书授权中心购买了证书,可以跳过这步,这里介绍如何生成自签名证书,自签名证书是指不是证书授权中心(Certificate Authority)颁发的证书,而是在个人计算机上通过相关工具自己生成的证书,一般用于测试,不可用于生产环境。为了方便管理证书(证书生成过程中会产生很多文件),我们可以单独创建一个目录用于存放证书文件,下面是通过openssl工具生成证书的过程。1. 创建目录$ cd ~$ mkdir ssl$ cd ssl2. 创建秘钥文件创建秘钥文件definesys.key,名称可以自定义,需要指定密码(随意密码即可)$ openssl genrsa -des3 -out definesys.key 1024Generating RSA private key, 1024 bit long modulus…….++++++………………++++++e is 65537 (0x10001)Enter pass phrase for definesys.key:Verifying - Enter pass phrase for definesys.key:3. 创建csr证书需要输入相关信息,比较重要的是Common Name,这个是访问nginx的地址$ openssl req -new -key definesys.key -out definesys.csrEnter pass phrase for definesys.key:You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter ‘.’, the field will be left blank.—–Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:ShanghaiLocality Name (eg, city) []:ShanghaiOrganization Name (eg, company) [Internet Widgits Pty Ltd]:DefinesysOrganizational Unit Name (eg, section) []:DefinesysCommon Name (e.g. server FQDN or YOUR name) []:www.definesys.comEmail Address []:jianfeng.zheng@definesys.comPlease enter the following ’extra’ attributesto be sent with your certificate requestA challenge password []:可以不用输An optional company name []:可以不用输#此时文件$ ssl lltotal 16-rw-r–r– 1 asan staff 733 1 3 23:57 definesys.csr-rw-r–r– 1 asan staff 963 1 3 23:55 definesys.key4. 去除秘钥密码nginx使用私钥时需要去除密码,执行以下命令时需要输入秘钥的密码$ cp definesys.key definesys.key.bak$ openssl rsa -in definesys.key.bak -out definesys.keyEnter pass phrase for definesys.key.bak:writing RSA key5. 生成crt证书$ openssl x509 -req -days 3650 -in definesys.csr -signkey definesys.key -out definesys.crtSignature oksubject=/C=CN/ST=Shanghai/L=Shanghai/O=Definesys/OU=Definesys/CN=www.definesys.com/emailAddress=jianfeng.zheng@definesys.comGetting Private key#此时文件列表$ ssl lltotal 32-rw-r–r– 1 asan staff 1017 1 4 00:03 definesys.crt-rw-r–r– 1 asan staff 733 1 3 23:57 definesys.csr-rw-r–r– 1 asan staff 887 1 4 00:02 definesys.key-rw-r–r– 1 asan staff 963 1 4 00:01 definesys.key.baknginx容器配置1. 证书文件上传将definesys.crt文件和definesys.key文件拷贝到服务器上,假设你服务器上nginx的配置文件在/etc/nginx/目录下,可以在该目录下创建一个文件夹,这里命名certs,将文件拷贝至该文件夹下。2. 配置文件修改修改配置文件nginx.confserver { listen 443 ssl; server_name www.definesys.com; ssl_certificate /etc/nginx/certs/definesys.crt; ssl_certificate_key /etc/nginx/certs/definesys.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; }}如果server配置不在nginx.conf文件上,可以在conf.d文件夹下找.conf后缀的文件,一般有个default.conf文件。3. 启动容器docker run -d –restart=unless-stopped -p 443:443 -v /etc/nginx/:/etc/nginx -v /var/run/docker.sock:/tmp/docker.sock:ro -v /u01/application:/usr/share/nginx/html nginx访问https://localhost验证配置是否正确,如果能够正常访问说明配置成功,由于是自签名证书,打开时会提示证书不安全,忽略即可。 ...

January 4, 2019 · 2 min · jiezi

SSL/TLS 握手协议概述

SSL/TLS 握手协议使客户端和服务端能够安全协商出同一份通信密钥,本文隐藏了一些细节上的内容,对这一握手过程进行了简要说明,如有错误还请指出SSL/TLS 握手协议(0) Client 与 Server 之前建立 (TCP) 连接(1) Client 向 Server 发送 “client hello” 消息,里面包含了安全相关的信息,例如 SSL/TLS 版本号,Client 支持的加密套件 (CipherSuite)。“client hello” 消息还包含了一个随机数client random,用于通信密钥的计算。SSL/TLS 协议还允许 “client hello” 消息包含 Client 所支持的压缩算法 (可选项)(2) Server 回复一条 “server hello” 消息,里面包含了加密套件 (Server 从 “client hello” 消息的 CipherSuites 列表中选择其中一个),session id 和 另一个随机数server random。Server 还会在消息中附带自己的数字证书。(可选) 如果 Server 需要 Client 的数字证书进行客户端认证,会向 Client 发送 “client certificate request” 请求消息,里面包含了 Server 所支持的证书类型和认可的证书颁发机构 CA(3) Client 收到 “server hello”,验证 Server 端的数字证书,并得到证书中 Server 端的公钥,读者可自行查阅更多数字证书的知识(4) Client 向 Server 发送第三个随机数pre-master secret。与之前不同,这次的随机数使用了 Server 的公钥加密 (非对称加密)。现在双方同时拥有这三个随机数client random,server random,premaster secret,可以用来计算生成共同的通信密钥 master secret 用于加密后面传输的业务数据。(5 - 可选) 如果收到 Server 端发来的 “client certificate request” 请求消息,Client 会向 Server 发送一个使用 Client 自己的私钥加密过的随机数 (暂时记作 secret-A),附带 Client 的数字证书。或者发送一个 “no digital certificate alert” 无证书警告,这种情况下基本可以认为 SSL/TLS 握手失败。(6 - 可选) Server 验证 Client 发送过来的数字证书,并得到证书中公钥对 Client 进行身份认证 (通过公钥解密上面那个 secret-A)。(7) Client 向 Server 发送 “finished” 消息,使用第 4 步中计算出来的密钥进行加密传输 (对称加密),这表示 Client 端握手阶段已经完成。(8) Server 也向 Client 发送 “finished” 消息,使用第 4 步中计算出来的密钥进行加密传输 (对称加密),这表示 Server 端握手阶段完成。(9) SSL/TLS 握手阶段完成,接下来双方通信的消息都会使用协商出来的密钥进行加密 (对称加密)Java 代码演示服务端 (全局 SSL 配置)public static void main(String[] args) throws IOException { System.setProperty(“javax.net.debug”, “SSL,handshake”); System.setProperty(“javax.net.ssl.keyStore”, “./keystore/TEST.p12”); System.setProperty(“javax.net.ssl.keyStorePassword”, “TEST”); SSLServerSocketFactory factory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); SSLServerSocket serverSocket = (SSLServerSocket) factory.createServerSocket(8001); // serverSocket.setNeedClientAuth(true); 需求客户端认证,可选 while (true) { try { SSLSocket socket = (SSLSocket) serverSocket.accept(); InputStream in = socket.getInputStream(); String message = IOUtils.toString(in); System.out.println(message); in.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } }}客户端public static void main(String[] args) throws UnknownHostException, IOException { System.setProperty(“javax.net.debug”, “SSL,handshake”); System.setProperty(“javax.net.ssl.trustStore”, “./keystore/TEST.p12”); System.setProperty(“javax.net.ssl.trustStorePassword”, “TEST”); SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket socket = (SSLSocket) factory.createSocket(“localhost”, 8001); socket.startHandshake(); OutputStream out = socket.getOutputStream(); out.write(“hello”.getBytes()); out.close(); socket.close();}因测试需要,Server 的数字证书是自签名的,而非权威的 CA 所颁发,于是客户端使用了全局的 TrustStore 配置,引入 Server 的数字证书,否则会有以下错误Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) … 14 more 现在我们分别启动 Server 和 Client,并分析 SSL debug 日志Client Hello*** ClientHello, TLSv1.2RandomCookie: GMT: 1545722559 bytes = { 221, 47, 184, 101, 75, 18, 171, 225, 219, 236, 80, 229, 222, 114, 155, 14, 110, 144, 168, 163, 85, 252, 110, 180, 127, 37, 247, 50 }Session ID: {}Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]Compression Methods: { 0 }Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1}Extension ec_point_formats, formats: [uncompressed]Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA首先是 Client 发起 SSL 握手,发送 “client hello” 消息ClientHello, TLSv1.2 得知 Client 支持的版本号RandomCookie,客户端生成的随机数 (client random),使用 4 个字节的当前时间加上 28 个随机字节Cipher Suites 列表,表示 Client 所支持的加密套件Server HelloServer 收到 “client hello”,即来自 Client 的握手请求,回复 “server hello” ServerHello, TLSv1.2RandomCookie: GMT: 1545722559 bytes = { 230, 234, 216, 95, 222, 185, 10, 245, 211, 122, 11, 47, 116, 109, 51, 164, 52, 92, 165, 72, 58, 222, 7, 19, 230, 32, 247, 99 }Session ID: {92, 34, 219, 191, 186, 218, 195, 78, 237, 222, 208, 62, 165, 14, 115, 106, 29, 243, 81, 152, 79, 45, 199, 0, 141, 231, 199, 100, 242, 152, 101, 13}Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256Compression Method: 0Extension renegotiation_info, renegotiated_connection: <empty>Cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 Certificate chainchain [0] = [[ Version: V3 Subject: CN=fwks, OU=ACL, O=ACL, L=ZHA, ST=ASIA, C=CN, EMAILADDRESS=ACL@GMAIL.COM Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11…………ServerHello, TLSv1.2,Server 使用的版本号RandomCookie,Server 生成的随机数 (server random),4 个字节的当前时间加上 28 个随机字节Session ID,凭借 session id,会话双方可以缓存并使用 SSL/TLS 握手阶段生成的密钥,而不需要再频繁地进行 SSL/TLS 握手Cipher suite,Server 从 “client hello” 的加密套件列表中选择的其中一个Certificate chain,是从 CA 到 Server 的数字证书链列表。因为这里是测试用的自签名证书,所以证书链中只有 Server 自己的数字证书Client 收到 “server hello” 后对 Server 的证书进行验证,成功后打出如下日志 (测试需要,Server 的自签名证书已经配置在 Client 的 TurstStore/TrustManager 中)Found trusted certificate:[[ Version: V3 Subject: CN=fwks, OU=ACL, O=ACL, L=ZHA, ST=ASIA, C=CN, EMAILADDRESS=ACL@GMAIL.COM Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11…………“server hello” 中还有一段消息 ServerKeyExchange,告诉 Client 使用的密钥交换算法是什么 (例中使用 ECDH 算法),即如何使用 client random, server random, premaster-secret 生成通信密钥 (不了解 ECDH,这里可能会有误)。*** ECDH ServerKeyExchangeSignature Algorithm SHA512withRSAServer key: Sun EC public key, 256 bits public x coord: 80178198866764561576110018839724135146035097258288090685496480316896017800231 public y coord: 21879990761153492368331320937448674839810402545614808541518903129245252068750 parameters: secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)ClientKeyExchangeClient 使用 Server 的公钥加密第三个随机数 pre-master secret,并发送给 Server。只有 Server 能使用自己的私钥解出这个 pre-master secret*** ECDHClientKeyExchangeECDH Public value: { 4, 159, 152, 225, 34, 111, 12, 18, 196, 101, 247, 201, 137, 231, 252, 89, 48, 157, 66, 201, 181, 25, 159, 10, 12, 202, 18, 190, 64, 58, 12, 220, 204, 49, 251, 95, 11, 40, 251, 46, 204, 69, 48, 238, 166, 116, 134, 140, 172, 186, 106, 85, 34, 105, 169, 185, 87, 101, 80, 133, 214, 130, 56, 132, 64 }main, WRITE: TLSv1.2 Handshake, length = 70现在通信双方都掌握了足够的信息去生成通信密钥 (master secret)SESSION KEYGEN:PreMaster Secret:0000: 03 01 84 54 F5 D6 EB F5 A8 08 BA FA 7A 22 61 2D …T……..z"a-0010: 75 DC 40 E8 98 F9 0E B2 87 80 B8 1A 8F 68 25 B8 u.@……….h%.0020: 51 D0 54 45 61 8A 50 C9 BB 0E 39 53 45 78 BE 79 Q.TEa.P…9SEx.yCONNECTION KEYGEN:Client Nonce:0000: 40 FC 30 AE 2D 63 84 BB C5 4B 27 FD 58 21 CA 90 @.0.-c…K’.X!..0010: 05 F6 A7 7B 37 BB 72 E1 FC 1D 1B 6A F5 1C C8 9F ….7.r….j….Server Nonce:0000: 40 FC 31 10 79 AB 17 66 FA 8B 3F AA FD 5E 48 23 @.1.y..f..?..^H#0010: FA 90 31 D8 3C B9 A3 2C 8C F5 E9 81 9B A2 63 6C ..1.<..,……clClient Nonce,就是第一个随机数 client randomServer Nonce,就是第二个随机数 server randomPreMaster Secret,第三个随机数生成的通信密钥如下。除了 Master Secret 的其他几个,笔者也不是特别了解Master Secret:0000: 2C 31 A6 EC A7 75 D0 DC E9 3E 23 1D B4 B7 50 87 ,1…u…>#…P.0010: 48 41 18 7D 29 D4 DB 8A 7D A5 F3 D5 15 08 A4 50 HA..)……….P0020: 5A 4A 50 7D 08 C3 E5 A5 CB ED 4C 40 80 C3 B8 B2 ZJP…….L@….Client MAC write Secret:0000: 1C C1 5F 82 CB CD AB 6B 77 C7 7B D8 66 48 6F A4 ..….kw…fHo.0010: C2 30 59 4D 91 1A 36 82 A4 C2 EF 9B 42 B5 98 7F .0YM..6…..B…Server MAC write Secret:0000: 7D D6 D2 3C 6F 61 AE 15 1F 62 46 4E A5 68 59 66 …<oa…bFN.hYf0010: 72 50 81 0D 12 07 41 B4 8E 83 1F 5D EF 85 D0 12 rP….A….]….Client write key:0000: B0 50 53 C9 FF 10 4E 71 0B 5F 29 63 9C 47 82 77 .PS…Nq.)c.G.wServer write key:0000: 65 67 22 93 A2 45 74 18 D0 F7 B9 F2 78 19 61 07 eg"..Et…..x.a.Finish 消息现在通信双方都计算同一份密钥 Master Secret,可以用于加密并发送 finish 消息了。但在此之前 Client 还会发送了一条 “Change Cipher Spec”,用于告诉对方接下来的通信使用新的密钥加密消息。SSL 日志也会打出下面这一条:main, WRITE: TLSv1.2 Change Cipher Spec, length = 1接下来才是使用新密钥加密发送 finish 消息*** Finishedverify_data: { 5, 73, 52, 104, 95, 23, 44, 252, 228, 173, 15, 129 }main, WRITE: TLSv1.2 Handshake, length = 80Server 收到来自 Client 的 “Change Cipher Spec” 和 “finish” 消息后,也会向 Client 发送 “Change Cipher Spec” 和 “finish” 消息main, READ: TLSv1.2 Change Cipher Spec, length = 1main, READ: TLSv1.2 Handshake, length = 80 Finishedverify_data: { 5, 73, 52, 104, 95, 23, 44, 252, 228, 173, 15, 129 }main, WRITE: TLSv1.2 Change Cipher Spec, length = 1 Finishedverify_data: { 169, 120, 73, 97, 72, 13, 37, 157, 77, 249, 0, 7 }***main, WRITE: TLSv1.2 Handshake, length = 80至此,SSL/TLS 握手阶段完成,通信双方使用新协商的密钥加/解密业务数据main, READ: TLSv1.2 Application Data, length = 64hello关于 HTTPS到这是否豁然开朗了?HTTPS 就是 HTTP over SSL/TLS,同样先进行 SSL/TLS 握手协商通信密钥,再使用通信密钥加密 HTTP 请求/响应报文。如果你在浏览器输入 https://localhost:8001/ 访问上面的 SSL Server,浏览器会给出如下警告浏览器在验证 Server 证书的时候已经失败了,原因是:证书不可信,因为它是自签名的 (The certificate is not trusted because it is self-signed)证书的内容和域名 “localhost” 不匹配 (The certificate is not valid for the name localhost)附录A:加密套件 CipherSuite加密算法套件是一组密码算法的集合,SSL/TLS 通信过程会使用到这一组算法,他们包括密钥交换算法 (key exchange algorithm),主要有 RSA, DH, ECDH, ECDHE认证算法,规定服务端认证和客户端认证 (可选) 使用的算法,主要有 RSA, DSA, ECDSA 这一类非对称加密算法数据加密算法,规定在实际的数据传输中使用的对称加密算法,有 AES, DES, 3DES 这一类对称加密算法消息验证算法 (MAC algorithm),规定数据完整性验证算法 (验证数据在传输中是否受到噪声干扰和其它非人为的破坏),SHA, MD5 这一类散列算法可作为 MAC分割线上方的算法在 SSL/TLS 握手阶段使用,下方两类算法在实际数据传输时使用到回顾之前测试中使用到的加密套件Cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS: 协议名字ECDHE: 密钥交换算法RSA: 认证算法 (RSA 非对称加密算法)WITH: 分割线AES_128_CBC: 数据加密算法 (AES 对称加密算法)SHA256: MAC 算法 (SHA 散列算法/哈希算法) ...

December 26, 2018 · 6 min · jiezi

VisualVm利用SSL连接JMX的方法

原文地址在前一篇文章里提到在生产环境下应该使用SSL来创建JMX连接,本文就来讲一下具体怎么做。前导知识先了解一下Java客户端程序在创建SSL连接的一些相关的事情:Java client程序在做SSL连接的时候,会拉取server的证书,利用truststore去验证这个证书,如果不存在 or 证书过期 or 不是由可信CA签发,就意味着服务端不被信任,就不能连接。如果在程序启动时没有特别指定使用哪个truststore(通过System Property javax.net.ssl.trustStore 指定),那么就会使用$JAVA_HOME/jre/lib/security/cacerts。如果指定了,就会使用指定的truststore + cacerts来验证。cacerts存放了JDK信任的CA证书(含有public key),它里面预先已经存放了已知的权威CA证书。你可以通过keytool -list -keystore - $JAVA_HOME/jre/lib/security/cacerts看到(让你输密码的时候直接回车就行了)以上过程被称为server authentication,也就是说client验证server是否可信,server authentication是最常见的,https就是这种模式。不过在用SSL连接JMX的时候,还要做client authentication,即server验证client是否可信。原理和上面提到的一样,只不过变成server用自己的truststore里验证client的证书是否可信。第一步:制作keystore和truststore上面提到的证书主要保存了一个public key,SSL是一个非对称加密协议,因此还有一个对应的private key,在java里private key和private key存放在keystore里。下面我们来制作visualvm(client)和java app(server)的keystore和truststore。先讲大致流程,然后再给出命令:生成visualvm的keystore,导出cert,把cert导入到java-app的truststore里生成java-app的keystore,导出cert,把cert导入到visualvm的truststore里具体命令:生成visualvm的keystore keytool -genkeypair \ -alias visualvm \ -keyalg RSA \ -validity 365 \ -storetype pkcs12 \ -keystore visualvm.keystore \ -storepass <visualvm keystore的密码> \ -keypass <同visualvm keystore的密码> \ -dname “CN=<姓名>, OU=<组织下属单位>, O=<组织名称>, L=<城市>, S=<省份>, C=<国家2字母>“导出visualvm的certkeytool -exportcert \ -alias visualvm \ -storetype pkcs12 \ -keystore visualvm.keystore \ -file visualvm.cer \ -storepass <visualvm keystore的密码>把visualvm的cert导入到java-app的truststore里,实际上就是生成了一个truststorekeytool -importcert \ -alias visualvm \ -file visualvm.cer \ -keystore java-app.truststore \ -storepass <java-app truststore的密码> \ -noprompt生成java-app的keystore keytool -genkeypair \ -alias java-app \ -keyalg RSA \ -validity 365 \ -storetype pkcs12 \ -keystore java-app.keystore \ -storepass <java-app keystore的密码> \ -keypass <同java-app keystore的密码> \ -dname “CN=<姓名>, OU=<组织下属单位>, O=<组织名称>, L=<城市>, S=<省份>, C=<国家2字母>“导出java-app的certkeytool -exportcert \ -alias java-app \ -storetype pkcs12 \ -keystore java-app.keystore \ -file java-app.cer \ -storepass <java-app keystore的密码>把java-app的cert导入到visualvm的truststore里keytool -importcert -alias java-app \ -file java-app.cer \ -keystore visualvm.truststore \ -storepass <visualvm truststore的密码> \ -noprompt所以最终得到的文件是这么几个:visualvm.keystore,包含visualvm的public key和private keyvisualvm.truststore,包含java-app certjava-app.keystore,包含java-app的public key和private keyjava-app.truststore,包含visualvm cert第二步:启动Tomcat我们还是用Tomcat做实验,给CATALINA_OPTS添加几个参数像下面这样,因为参数比较多,所以我们在$TOMCAT/bin下添加一个setenv.sh的文件(记得加上可执行权限):CATALINA_OPTS="-Dcom.sun.management.jmxremote"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=1100"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=true"CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=<host or ip>“CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.keyStore=<path to java-app.keystore>“CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.keyStorePassword=<java-app.keystore的密码>“CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.trustStore=<path to java-app.truststore>“CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.trustStorePassword=<java-app.truststore的密码>“然后$TOMCAT/bin/startup.sh第三步:启动visualvmjvisualvm -J-Djavax.net.ssl.keyStore=<path to visualvm.keystore> \ -J-Djavax.net.ssl.keyStorePassword=<visualvm.keystore的密码> \ -J-Djavax.net.ssl.trustStore=<path to visualvm.truststore> \ -J-Djavax.net.ssl.trustStorePassword=<visualvm.truststore的密码>你可以不加参数启动jvisualvm,看看下一步创建JMX连接是否成功,如果配置正确应该是不会成功的。第四步:创建JMX连接加了上述参数启动jvisualvm后,和利用VisualVm和JMX远程监控Java进程里提到的步骤一样创建JMX连接,只不过在创建JMX连接的时候不要勾选【不要求SSL连接】(不过经实测,勾不勾选都能连接成功的)。参考资料Monitoring and Management Using JMX Technology - Using SSLCustomizing the Default Keystores and Truststores, Store Types, and Store PasswordsCustomizing JSSE,这个表格列出了一些SSL相关的System PropertiesCreating a Keystore to Use with JSSEkeytoolMonitor Java with JMXJava Secure Socket Extension (JSSE) Reference Guide,这是Java对于SSL支持的最全的参考文档我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/dev… ...

October 13, 2018 · 2 min · jiezi