[HttpClient]SSL双向实例】的更多相关文章

package com.jerry.httpclient; import java.io.File; import java.io.FileInputStream; import java.security.KeyStore; import javax.net.ssl.SSLContext; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import…
Netty实现SSL双向验证完整实例 博客分类: netty nettyssl自签证书  一.证书准备 要使用ssl双向验证,就必须先要生成服务端和客户端的证书,并相互添加信任,具体流程如下(本人调试这个用例的时候,花了很多时间来验证证书是否正确,以及握手失败的原因,这里证书生成过程只要按流程走,本人能保证绝对没有问题) 现在打开cmd,在哪个目录下打开,证书就会放在哪个目录下: 第一步:   生成Netty服务端私钥和证书仓库命令 keytool -genkey -alias securech…
一.SSL简单介绍 SSL(Secure Sockets Layer 安全套接层)就是一种协议(规范),用于保障客户端和服务器端通信的安全,以免通信时传输的信息被窃取或者修改. 怎样保障数据传输安全?  客户端和服务器端在进行握手(客户端和服务器建立连接和交换参数的过程称之为握手)时会产生一个“对话密钥”(session key),用来加密接下来的数据传输,解密时也是用的这个“对话密钥”,而这个“对话密钥”只有客户端和服务器端知道.也就是说只要这个“对话密钥”不被破解,就能保证安全. 2. 客户…
本文通过模拟场景,介绍SSL双向认证的java实现 默认的情况下,我认为读者已经对SSL原理有一定的了解,所以文章中对SSL的原理,不做详细的介绍. 如果有这个需要,那么通过GOOGLE,可以搜索到很多这样的文章. 模拟场景: Server端和Client端通信,需要进行授权和身份的验证,即Client只能接受Server的消息,Server只能接受Client的消息. 实现技术: JSSE(Java Security Socket Extension) 是Sun为了解决在Internet上的安…
介绍了SSL双向认证的一些基本问题,以及使用Nginx+PHP基于它搭建https的Webservice. 之前的方式只是实现1:1的模式,昨天同事继续实现了n:1的模式,这里我再整理记录下. 由于nginx的ssl_client_certificate参数只能指定一个客户端公钥,如果增加一个客户端进行通信就要重新配一个server. n:1的模式是通过CA的级联证书模式实现的,首先自己生成一套CA根级证书,再借助其生成二级证书作为client证书. 此时client私钥签名不仅可以通过对应的c…
本文是1:1模式,N:1模式请参见新的一篇博客<SSL双向认证(高清版)> ----------------------------------------------------- 我是分割线 --------------------------------------------------------- 标题太长了不知道该怎么起,索性就把keyword列出来吧~ WebService的WS-*搞了一天没搞定,看样子PHP应该是彻底抛弃SOAP协议了,google翻烂了也没找到什么靠谱的解…
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................................................................................. 12 SSL(Server Socket Layer)简介 .......................................................…
安装环境: OS:contos 6.4 httpd:httpd-2.2.15-59.el6.centos.i686.rpm openssl:openssl-1.0.1e-57.el6.i686.rpm mod_ssl:mod_ssl-2.2.15-59.el6.centos.i686.rpm 一.配置apache的用户认证 用户认证:用户需在进入web时,登录合法的用户,认证通过后,才能进入访问web服务器 (1)安装httpd,编辑/etc/httpd/conf/httpd.conf 在文件中…
ssl双向认证 一.背景知识 1.名词解释 ca.key: 根证书的私钥 , ca.crt: 根证书的签名证书 server.key, server.crt client.key, client.crt 2.生成机制 1.openssl-> ca.key,ca.crt2.openssl-> server.key->server.csr<-ca.crt+ca.key =>server.crt3.openssl-> client.key->client.csr<…
序言 去年年底闲来几天,有位同事专门在网上找一些注册型的app和网站,研究其短信接口是否安全,半天下来找到30来家,一些短信接口由于分析难度原因,没有继续深入,但差不多挖掘到20来个,可以肆意被调用,虽然不能控制短信内容,但可以被恶意消耗,或者用于狂发信息给那些不喜欢的人. 漏洞分析 短信接收方无法约束 由于是注册型接口,接收方往往都是平台内不存在的手机号,所以无法约束. 接口请求方无法约束 由于是http(s)接口,任何人都可以请求,只要简单分析你的接口. 调用频次无法约束 一般的,接口开发者…
refs: SSL双向认证和SSL单向认证的区别https://www.jianshu.com/p/fb5fe0165ef2 图解 https 单向认证和双向认证!https://cloud.tencent.com/developer/news/233610 SSL/TLS 双向认证(一) -- SSL/TLS工作原理https://blog.csdn.net/wuliganggang/article/details/78428866 双向认证 SSL 协议要求服务器和用户双方都有证书.单向认证…
php实现https(tls/ssl)双向认证 通常情况下,在部署https的时候,是基于ssl单向认证的,也就是说只要客户端认证服务器,而服务器不需要认证客户端. 但在一些安全性较高的场景,如银行,金融等领域,通常会要求进行客户端认证.从而实现ssl的双向认证. 由于nginx的ssl_client_certificate参数只能指定一个客户端公钥,如果增加一个客户端进行通信就要重新配一个server. n:1的模式是通过CA的级联证书模式实现的,首先自己生成一套CA根级证书,再借助其生成二级…
nginx支持ssl双向认证配置 listen 443; server_name test.com; ssl on; ssl_certificate server.crt; //server端公钥 ssl_certificate_key server.key; //server端私钥 ssl_client_certificate client.crt; //client端公钥 ssl_session_timeout 5m; ssl_verify_client on; //开启client验证 相…
原文链接 前面两部分分别讲解了如何在.net程序中使用SSL实现安全通信以及SSL的通信过程,并通过抓包工具具体分析了ssl的握手过程,本文通过一个demo来模拟ssl协议,在TCP之上实现自己的安全通信. 创建证书 为了实现安全的通信,必须使用证书对传输的数据进行加密,有两种方法可以得到证书,一是安装CA服务器,使用CA来发放证书,二是通过makecert.exe工具自己创建. 创建服务器证书: cmd>makecert.exe -r -pe -n "CN=MySslServer&quo…
官方文档: http://www.php.net/manual/zh/function.curl-setopt.php#10692 官方举例: <?phpcurl_setopt($ch, CURLOPT_VERBOSE, '1');curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '1');curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1');curl_setopt($ch, CURLOPT_CAINFO,  getcwd()…
SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码) 摘自: https://blog.csdn.net/sjin_1314/article/details/21043613 2014年03月11日 22:02:14 轻飘风扬 阅读数:19886   SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TL…
在 kafka 的 broke 和 client 之间加入 SSL 双向认证https://blog.csdn.net/hohoo1990/article/details/79110031 kafka配置单向ssl加密,以及加密后python客户端访问方式(kafka v1.1.0)  https://www.cnblogs.com/Adonis-SUN/p/9267620.html 注意 证书签名体系中,有一个信任链的概念,就是说,如果使用证书A签名了证书B.C.D,那么只要信任了 A,就会信…
C++ windows客户端支持SSL双向认证,服务端是JAVA开发的,使用的证书是jks格式的.C++并不支持JKS格式的证书,所以要用openssl进行转换下. 1. 需要先把jks转成.p12文件 keytool -importkeystore -srckeystore demo.jks -destkeystore demo.p12 -srcstoretype jks -deststoretype pkcs12 2.然后把.p12文件转成pem文件 openssl pkcs12 -node…
SSL/TLS证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是,如果服务器需要对客户端进行身份验证,该怎么办?这就需要双向认证证书. 为什么需要另一种认证方式的证书?因为当同时使用两种认证方式的证书时,有助于双方(即客户端和服务器端)之间的相互认证.另外,与标准SSL证书不同的是,双向认证的SSL证书实际上被称作为个人认证证书(PAC). 在了解SSL证书的两种…
EMQ是当前MQTT中,用于物联网领域中比较出色的一个broker,今天我这里要记录和分享的是关于SSL安全通信的配置和注意细节. 环境: 1. 单台Linux CentOS7.2系统,安装一个EMQTTD的实例broker. 2. emq的版本2.3.11. 3. 客户端分为mosquitto_pub,以及MQTT.fx 1.7.1的subscriber. 4. 证书是通过openssl(version:1.0.2k-fips)生成的,rootCA是自签名的,subscriber和publis…
双向验证,在客户机连接服务器时,客户机验证服务器的证书,服务器验证客户机的证书,链接双方都要对彼此的数字证书进行验证,保证这是经过授权的才能够连接. 1. 生成服务器端的keystore和truststore文件: 1.1. 以jks格式生成服务器端包含Public key和Private Key的keystore文件,keypass与storepass务必要一样,因为在tomcat server.xml中只配置一个password.    keytool -genkey -alias serv…
对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可用性并通过 SSL 进行通讯加密. 但特殊情况下我们也需要对客户端进行验证,只有受信任的客户端才能使用服务接口,此时我们就需要启用双向认证来达到这个目的,只有 当客户端请求带了可用的证书才能调通服务端接口 . CA 与自签名 CA 是权威机构才能做的,并且如果该机构达不到安全标准就会被浏览器厂商“封…
有朋友在搞一个项目,周末有聊到一些安全性的东西,很自然会想起https,但https究竟如何实施,其原理又是什么? 基于ssl,一般的应用都是单向认证,如果应用场景要求对客户来源做验证也可以实现成双向认证. 网上google一下: 为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议.SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术.SSL 的握手协议非常有效的让客户和服务器之间完成相互…
1.安装nginx 参考<nginx安装>:http://www.ttlsa.com/nginx/nginx-install-on-linux/ 如果你想在单IP/服务器上配置多个https,请看<nginx 同一个IP上配置多个HTTPS主机> 2.使用openssl实现证书中心 由于是使用openssl架设私有证书中心,因此要保证以下字段在证书中心的证书.服务端证书.客户端证书中都相同 Country Name State or Province Name Locality N…
原文地址: http://www.cnblogs.com/jerry19890622/p/4291053.html package com.jerry.httpclient; import java.io.File; import java.io.FileInputStream; import java.security.KeyStore; import javax.net.ssl.SSLContext; import org.apache.http.HttpEntity; import org…
所需jar包: commons-codec-1.3.jar commons-httpclient-3.0.jar commons-logging-1.1.1.jar /** * */ package httpClient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.U…
问题 使用 HTTP Client 请求 HTTPS 的 API 时出现 The certificate cannot be verified up to a trusted certification authority 异常,并且证书已经传入. 下面就是问题代码: public class Program { public static void Main(string[] args) { var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/se…
我们常见的SSL验证较多的只是验证我们的服务器是否是真实正确的,当然如果你访问的URL压根就错了,那谁也没有办法.这个就是所谓的SSL单向认证. 但是实际中,我们有可能还会验证客户端是否符合要求,也就是给我们每个用户颁发一个证书,比且每个数字证书都是唯一的,不公开的.这样就能通过这个数字证书保证当前访问我服务器的这个用户是经过服务器认可的,其他人不可访问. 双向认证 从第一个层面上 确保了服务器 与客户端 都是互相认可的.那么他们之间要进行通信,就会在通信协议上附加SSL协议,确保通信的内容是加…
CA根证书制作 # 创建CA私钥 openssl genrsa -out ca.key 2048 #制作CA根证书(公钥) openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 注意:CA证书中的Common Name不能与server和client证书中的Common Name相同 制作证书 # 创建私钥openssl genrsa -out server.pem 1024openssl rsa -in server.pem -ou…
线上图片下载服务器平时运行正常,最近突然出现一种比较奇怪的现象,只接受请求,但却没有处理请求,最开始怀疑下载线程挂掉了,dump 项目线程后发现异常: "pool-2-thread-1" prio=10 tid=0x00007f7fbc7c5000 nid=0x4e9 runnable [0x00007f800a05e000]   java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Nat…