`

Java HTTPS请求

阅读更多

 

区别

  http协议是明文传输,https是加密传输

 

作用

  它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

 

原理

  a. 一般意义上的https,就是服务器有一个证书。主要目的是保证服务器就是他声称的服务器,这个跟第一点一样;服务端和客户端之间的所有通讯,都是加密的。

  b. 具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。

  c. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。

  d.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。

这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。

 

加密过程:

 

       在https的通信过程中,组合使用了公用密钥方式加密和共享密钥方式加密这两种技术。公用密钥方式要比共享密钥方式慢得多,因此使用公用密钥来完成共享密钥的交换。公用密钥是从证书中获得的。拿到共享密钥之后,所有的内容之间的通信都会使用共享密钥来进行加密和解密。公用密钥的作用就是为了安全的交换共享密钥,共享密钥是用来通信内容的加密和解密。这样既确保了通信之间的安全,也确保了加密和解密的效率。

 

制作:

C:\Program Files\Java\jdk1.7.0_71\bin>keytool -v -genkeypair -alias tomcat -keya

lg RSA -keystore d:/tomcat.keystore -validity 36500

输入密钥库口令:

再次输入新口令:

您的名字与姓氏是什么? (必须与域名一致如:baidu.com

  [Unknown]:  xiaoxiao

您的组织单位名称是什么?

  [Unknown]:  daxiao

您的组织名称是什么?

  [Unknown]:  xiao

您所在的城市或区域名称是什么?

  [Unknown]:  beijing

您所在的省/市/自治区名称是什么?

  [Unknown]:  daxing

该单位的双字母国家/地区代码是什么?

  [Unknown]:  cn

CN=xiaoxiao, OU=daxiao, O=xiao, L=beijing, ST=daxing, C=cn是否正确?

  [否]:  y

 

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,50

0 天):

         CN=xiaoxiao, OU=daxiao, O=xiao, L=beijing, ST=daxing, C=cn

输入 <tomcat> 的密钥口令

        (如果和密钥库口令相同, 按回车):

[正在存储d:/tomcat.keystore]

 

创建自签名证书:

 

输入创建keystore时输入的密码

将证书导出

keytool -export -alias tomcat -keystore d:\tomcat.keystore -storepass 123456 -rfc -file d:\tomcat.cer

双击此证书进行安装,证书存储:“受信任的根证书颁发机构”

 此安装可以让本地可以被信任,但是换别的机器依然不行,所以上线后服务器的证书必须是购买

 

配置tomcat文件:

 

 server.xml

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="D:\tomcat.keystore"
               keystorePass="zhang1214"
               ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
                />

 ciphers属性:机密级别

 

 web.xml

    让所有的请求都走https

<security-constraint> 
       <web-resource-collection > 
              <web-resource-name >SSL</web-resource-name> 
              <url-pattern>/*</url-pattern> 
       </web-resource-collection>
                             
       <user-data-constraint> 
              <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
       </user-data-constraint> 
</security-constraint>

 

 双向:

http://jingyan.baidu.com/article/0f5fb099f1f9566d8334ea38.html

  • 大小: 35 KB
  • 大小: 23 KB
分享到:
评论

相关推荐

    Java Https请求,跳过证书,直接访问

    1. 客户端(如浏览器或Java应用程序)发起一个HTTPS请求。 2. 服务器发送其数字证书,包含公钥和证书颁发机构(CA)的信息。 3. 客户端验证服务器的证书,检查是否由受信任的CA签名,证书是否过期,以及域名是否匹配...

    Java发 Https请求工具类 支持SSL

    4. **Java HTTPS工具类**: 工具类封装了HTTPS请求的实现细节,包括证书管理、SSL上下文配置等,使得开发者无需深入了解底层实现即可方便地发送HTTPS请求。 5. **SSL配置**: 在Java中,为了支持SSL,需要设置`SSL...

    Https请求工具类,Java实现http请求,https请求

    Https请求工具类,Java实现http请求,https请求 本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用...

    Java Https工具类,Java Https Post请求

    - `HttpURLConnection`是HTTP/HTTPS请求的基础,可以通过设置`setUrl(url)`和`setRequestMethod("POST")`来创建POST请求。 3. **Java HTTPS工具类设计**: - `HttpsUtils.java`可能包含一个名为`HttpsUtils`的类...

    Java实现的Https请求工具类

    本篇文章将深入探讨如何在Java中实现一个用于处理HTTPS请求的工具类。 首先,要实现HTTPS请求,我们需要导入Java的`java.net`和`javax.net.ssl`包,这两个包提供了处理网络连接和SSL/TLS安全协议的类。以下是一些...

    java https请求

    在Java 3.x和4.x版本中,处理HTTPS请求的方法虽然与HTTP基本类似,但需要额外考虑安全性和证书管理。 一、Java HTTPS请求的基本步骤 1. 导入相关库:在进行HTTPS请求之前,需要导入`javax.net.ssl`和`java.net`这...

    Javahttps请求样例

    Javahttps请求样例 main方法直接可运行,改一下URL就行

    java发送http/https请求(get/post)Demo,亲测可用

    在Java编程语言中,发送HTTP和HTTPS请求是常见的任务,特别是在开发Web服务客户端或进行API交互时。HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)是用于在客户端和服务器之间交换数据的标准。这里我们将深入...

    Java发https请求证书问题

    ### Java 发送 HTTPS 请求时遇到证书问题解析 在进行网络通信的过程中,HTTPS 协议由于其安全性被广泛应用。本文将围绕“Java 发送 HTTPS 请求证书问题”这一主题展开讨论,通过对给定文件中的代码示例及操作步骤...

    java 发送https 请求 证书

    当你需要在Java程序中发送HTTPS请求时,可能会遇到证书相关的问题,特别是当服务器使用自签名证书或者非标准CA签发的证书时。本文将详细讲解如何在Java中处理这类问题,以及如何使用httpUtils工具进行HTTPS请求。 ...

    java发送http/https请求(get/post)代码

    在Java编程中,发送HTTP和HTTPS请求是常见的网络通信任务,尤其在开发Web服务客户端或者进行API测试时。本文将详细讲解如何使用Java发送GET和POST请求,以及涉及的HTTPS安全连接。 首先,理解HTTP和HTTPS的区别至关...

    java 发送https get请求工具类

    java 发送https get请求工具类

    java访问https网址下载文件(含证书)

    HTTPS请求可能涉及重定向,你需要检查`HttpURLConnection`的响应代码,如果返回的是3xx,可能需要手动处理重定向。 4. **打开输入/输出流**: 调用`connect()`方法建立实际的网络连接,然后通过`getInputStream()...

    java发送https请求的例子

    java发送https请求的例子

    java支持https的Post请求

    在Java编程环境中,进行HTTPS POST请求是常见的网络通信任务,特别是在需要安全传输敏感数据时,如用户登录信息或支付详情。HTTPS(HTTP over SSL/TLS)提供了加密和身份验证机制,确保了数据的隐私和完整性。本文将...

    java httpclient https或http及文件中转上传工具类

    该工具类使用httpclient进行http or https请求,包括requestbody格式和form表单格式,另外含文件服务器中转上传方法,几乎支持所有常用接口调用,内含详细注释和说明文件,含jar包,及maven方式引用,拿过去直接用吧

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    "JAVA利用HttpClient进行POST请求(HTTPS)" JAVA HttpClient是Apache软件基金会提供的一个开源实现HTTP客户端的Java库,能够帮助开发者轻松地与HTTP服务器进行交互。在实际项目中,我们经常需要使用HttpClient来发送...

    java开发https请求ssl不受信任问题解决方法

    Java 开发 HTTPS 请求 SSL 不受信任问题解决方法 在 Java 开发中,使用 HTTPS 请求时可能会遇到 SSL 不受信任的问题,这是因为 Java 的证书验证机制会检查目标服务器的证书是否合法,如果证书不合法或没有证书就会...

    java http 和 https请求

    压缩包里包含http和https两种请求,第一个文件是http请求包含post和get两种方式,剩下的是https的请求,最后一个文件里包含https的post和get两种方式。中间的两个是post 和 get 分开写的,按照需要引用吧

Global site tag (gtag.js) - Google Analytics