HTTPS 和 SSL 的安全性:-javax.net.ssl.SSLHandshakeException:证书已过期

2024-01-01

我已经尝试过命令进行检查缺少中间证书颁发机构使用这个命令

$ openssl s_client -connect mail.google.com:443

对于我的网站,应该显示证书链,但它只显示一个已经过期的证书。 但是当我检查服务器证书配置时https://www.digicert.com/help/ https://www.digicert.com/help/

它显示 SSL 证书已正确安装并显示正确的中间证书链,当我尝试在 Android 应用程序中访问 Web api 时,它显示以下错误:-

javax.net.ssl.SSLHandshakeException: Certificate expired at Thu Jun 11 21:58:21 GMT+05:30 2015 (compared to Wed May 18 10:48:45 GMT+05:30 2016)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err:     at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:327)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err:     at com.android.org.conscrypt.OpenSSLSocketImpl.waitForHandshake(OpenSSLSocketImpl.java:638)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err:     at com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:600)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:75)
05-18 10:48:45.750 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:93)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:187)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:123)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:134)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:196)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:602)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:522)
05-18 10:48:45.751 28372-28412/com.src.giveup1 W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:500)

我正在使用以下链接来检查 Android 应用程序中的服务器证书:-http://blog.fordemobile.com/2012/04/https-requests-on-android.html http://blog.fordemobile.com/2012/04/https-requests-on-android.html

证书是否在服务器上正确配置,或者我使用了错误的代码来检查证书。


你已经得到你的问题了。其实你的证书已经过期了。 您的网络服务的应用程序服务器需要更新其证书。

如需完整教程创建并检查证书你可以按照教程操作:

  1. 最常见的 OpenSSL 命令 https://www.sslshopper.com/article-most-common-openssl-commands.html
  2. 如何从 Shell 提示符验证 SSL 证书 http://www.cyberciti.biz/faq/test-ssl-certificates-diagnosis-ssl-certificate/

更改证书,您可以按照教程操作:

http://www.albeesonline.com/blog/2009/06/24/javax-net-ssl-sslhandshakeexception-certificate-expired/ http://www.albeesonline.com/blog/2009/06/24/javax-net-ssl-sslhandshakeexception-certificate-expired/


完整教程:

出于测试目的,我将使用mail.google.com:443SSL 证书由以下机构颁发Go Daddy.

步骤#1:获取证书

创建存储证书的目录:

$ mkdir -p ~/.cert/mail.google.com/
$ cd ~/.cert/mail.google.com/

检索mail.google.comgoogle邮件服务器提供的证书:

$ openssl s_client -showcerts -connect mail.google.com:443

从“----BEGIN CERTIFICATE-----”复制到“-----END CERTIFICATE-----”, 并将其保存在您的~/.cert/mail.google.com/目录为mail.google.com.pem.

步骤#2:获取发行人的证书

如果此证书是由 GoDaddy 颁发的,那么您需要获取“证书颁发机构根证书”(访问您的 CA 网站获取根证书):

$ wget https://certs.godaddy.com/repository/gd_bundle.crt -O ~/.cert/mail.google.com/gd.pem

步骤#3:重新哈希证书

使用以下命令创建指向由哈希值命名的文件的符号链接c_rehash, enter:

$ c_rehash ~/.cert/mail.google.com/

示例输出:

Doing  ~/.cert/mail.google.com/
mail.google.com.pem => 1d97af50.0
gd.pem => 219d9499.0

Test It

要确认您拥有正确的工作证书,请输入:

$ openssl s_client -CApath ~/.cert/mail.google.com/ -connect mail.google.com:443

示例输出:

CONNECTED(00000003)
......
....
 Verify return code: 0 (ok)
---

应该有很多数据,但是要注意的重要一点是最后一行“Verify return code: 0 (ok)”。我对 dovecot IMAP 邮件服务器使用相同的证书,输入以下内容来验证邮件服务器 SSL 证书:

$ openssl s_client -CApath ~/.cert/mail.google.com/ -connect mail.google.com:993

示例输出:

CONNECTED(00000003)
.....
.....
    Verify return code: 0 (ok)
---
* OK [CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS UIDPLUS LIST-EXTENDED I18NLEVEL=1 QUOTA AUTH=PLAIN AUTH=LOGIN] Dovecot ready.

再次是最后的“鸽舍准备就绪”线0 return code indicates that everything is working fine.

资源链接:

验证私钥与证书是否匹配 https://kb.wisc.edu/middleware/page.php?id=4064

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTPS 和 SSL 的安全性:-javax.net.ssl.SSLHandshakeException:证书已过期 的相关文章

  • 从两个数组中查找公共文件

    我正在尝试从两个数组中查找通用名称文件 我已将两个不同文件夹的文件名保存在两个不同的数组中 现在我正在创建一个通用文件数组 其中包含具有通用名称的文件 filenames 1 包含文件夹 1 中文件名称的数组 filename2 包含文件夹
  • Java检测音频文件(mp3)

    我有这段代码可以读取 mp3 文件 import java io File import java io IOException import javax sound sampled AudioSystem import javax sou
  • c3p0 Java 数据库池、故障转移配置

    当数据库关闭时 IP 和端口会自动切换到另一个数据库服务器 我应该如何配置 Web 应用程序的 c3p0 连接池以遵循此数据库故障转移机制 目前 我使用的是 c3p0 但是在上次数据库故障转移中 池连接无法重新建立 请求失败后重新建立 有助
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • 如何实现 Android 浮动 SearchWidget

    I am trying to implement the search widget in the current android apps but just can t get it done and I ve not been able
  • 无法使用 Firebase 广告:没有静态方法 zzc(Landroid/os/Bundle;

    我正在尝试将 Firebase 广告库添加到我的项目 该项目已经上线 中 构建工作正常 但当我尝试运行时 它崩溃并出现以下错误 11 16 10 33 13 535 540 540 com dap E AndroidRuntime 致命异常
  • Ripple 需要 API 级别 21(当前最低为 11),android?

    我有下面的可绘制的
  • 从 Apache Kafka 中的主题删除消息

    所以我是 Apache Kafka 的新手 我正在尝试创建一个简单的应用程序 以便我可以更好地理解 API 我知道这个问题在这里被问了很多 但是如何清除存储在主题上的消息 记录 我看到的大多数答案都说要更改消息保留时间或删除并重新创建主题
  • onKeyDown 和 onKeyLongPress

    我希望我的应用程序对音量按钮的正常按键事件和长按按键事件做出不同的反应 我已经看过了this https stackoverflow com questions 7493531 trying to catch the volume onke
  • 支持的 Android 设备:0 台设备

    我们是 TourisMap 的开发商 我们不明白为什么在 Google Play 开发者控制台上上传 apk 后 我们支持 0 台设备 我们个人的想法是 Manifest 和 build gradle 都可以 我们可以生成 apk 然后我们
  • 将 wgs 84 转换为纬度/经度

    你好 我在弄清楚如何在坐标类型之间进行转换时遇到了一些麻烦 我有一个坐标集列表 其描述如下 坐标始终采用 WGS84 系统 所有坐标 a 均表示为整数 值 x 和 y 其中坐标值乘以 1 000 000 一个例子 559262 631951
  • Android:需要记录麦克风输入

    有没有办法在实时播放 预览过程中记录 Android 中的麦克风输入 我尝试使用AudioRecord and AudioTrack这样做 但问题是我的设备无法播放录制的音频文件 实际上 任何Android播放器应用程序都无法播放录制的音频
  • Apache mod_rewrite:仅当不在本地主机中时才强制 www

    我的 htaccess 中有以下内容来强制 URL 中包含 www RewriteCond HTTP HOST www RewriteRule http www HTTP HOST 1 R 301 L 如果不在本地主机上 我该如何应用它 我
  • 加载远程图像

    在 Android 中 最简单的方法是什么 从远程服务器加载图像 将其显示在 ImageView 中 这是我在应用程序中实际使用的方法 我知道它有效 try URL thumb u new URL http www example com
  • “android.view.View 已弃用” - 还有什么可以使用或如何修复?

    我刚刚开始尝试 Android Studio 按照视频教程上的说明进行操作 这是我对这个人告诉我的看法 但我不断收到错误消息 View is deprecated 我该如何解决 或者我该用什么来代替 这是我的代码 public class
  • 如何禁用 Google 请求许可定期检查手机上已安装的应用程序?

    我正在开发一个 Android 应用程序 因此我不断地在我的测试设备上构建和安装该应用程序 几天以来 我在每次构建 安装时都会提出一个问题 Google 可能会定期检查已安装的应用程序是否存在潜在危害 行为 在 Google 设置 gt 验
  • 在 Android 版 ORMLite 中加入类会引发 SQL 异常:找不到外部类,反之亦然

    我正在尝试使用 QueryBuilder 为两个不同的类创建一个联接查询 一个Product类和一个Coupon类 引用 Product 属性 storeId public class Coupon DatabaseField column
  • 使用客户端 hello 消息进行 TLS 协议检测

    我需要检测网络流量中的 https 数据包 到目前为止 我将所有 443 标记为 https 但我不想再在这种情况下使用端口信息 检查客户端问候消息是否足够 Check 22 and version info 0300 0301 or 03
  • Nitrous.IO 上的 HTTPS (TLS/SSL) 服务器

    请问如何在 Nitrous IO Boxes 上创建 TLS 服务器 我认为我至少必须获得 cert pem 和 key pem 或类似的东西 根据您所在的区域 您可以自动获得 SSL 身份验证 这样就够了吗 http help nitro
  • Java中不同格式的字符串解析为日期

    我想转换String to Date以不同的格式 例如 我从用户那里得到 String fromDate 19 05 2009 i e dd MM yyyy format 我想转换这个fromDate作为日期对象 yyyy MM dd fo

随机推荐

  • 检测Python函数中的所有全局变量?

    我正在尝试分析一些混乱的代码 这些代码恰好在函数中大量使用全局变量 我正在尝试重构代码 以便函数仅使用局部变量 有没有办法检测函数内的全局变量 例如 def f x x x 1 z x y return z 这里的全局变量是y因为它不是作为
  • android活动截图如何?

    你好朋友我正在制作一个带有 webview 的应用程序 我想截取我的活动截图 目前我正在使用此代码来捕获图像 public Bitmap takeScreenshot View rootView findViewById android R
  • MySQLi 无法准备语句

    我在脚本中运行两个查询room php 两者都使用MySQLi准备好的语句 其代码如下 Get room name stmt mysqli gt prepare SELECT name FROM rooms WHERE r id stmt
  • 如何在Android中使用SmsManager发送具有自定义线程ID的短信?

    我想创建一条带有自定义线程 ID 例如 10001 的 SMS 我怎样才能做到这一点 原因是因为我需要实现删除短信功能 而删除特定短信线程的唯一方法是通过线程 ID 或电话号码 而此时获取电话号码并不完全可能 因此需要定义自定义线程 ID在
  • 如何处理应采用 https 保护的网站中的混合内容?

    我正在服务器 A 上构建一个网站 已注册域名 用于人们创建和运行他们的 应用程序 这些 应用程序 实际上是运行在服务器B上的docker容器 在容器中 有一个可以直接访问的小型Web应用程序 如下所示 http IP ADDR OF SER
  • 如何计算两个加权样本之间的 Kolmogorov-Smirnov 统计量

    假设我们有两个样本data1 and data2以及各自的权重weight1 and weight2我们想要计算两个加权样本之间的 Kolmogorov Smirnov 统计量 我们在 python 中执行此操作的方式如下 import n
  • 在 Yii 框架中包含 CSS、javascript 文件

    如何在 Yii 框架中包含 Javascript 或 CSS 文件 我想在我的网站上创建一个运行一些 Javascript 应用程序的页面 所以我想包括 js and css特定视图中的文件 像这样的事情
  • 使用另一个数组作为输入对数组进行排序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我想使用下
  • 谷歌电子表格根据其他值查找单元格

    我们正在尝试使用它 我将作为参考 我试图让单元格 X4 显示 A 列中相对于单元格 X3 中显示的 B 列最大值的数据 即在撰写本文时 最大值列为 27 这是由 Purelycraft 完成的 所以我希望它使用公式自动显示名称 Purely
  • 在其他应用程序窗口上创建按钮

    我编写了下面的代码来在计算器上创建一个额外的按钮 但该按钮不显示 var Object1 TButton Hand THandle begin Hand FindWindow CalcFrame Calculator Object1 TBu
  • 如何在 OS X 上全局设置 java 系统属性?

    短篇故事 我需要一种系统级方法来设置java awt headless财产给true 对于所有 java 调用 也就是说 使用 Djava awt headless true不是一个选项 因为 java 是从我无权访问的地方调用的 例如 从
  • 如何将树枝中的两个字符串组合在一起?

    我想做这样的事情 set c a b Where a and b是字符串 我该怎么做 做法是 set c a b
  • 隐藏 Nativescript-Angular TabView 上的选项卡按钮

    我正在尝试找到一种方法来使用 Angular 6 应用程序删除元素上的选项卡按钮 但到目前为止没有效果 基本上 我只想保留选项卡内容及其滑动功能 显然 您可以使用特定的 Android 和 iOS 方法 但我不确定如何做到这一点
  • 如何判断 NSTimer 是否处于活动状态?

    我有一个类似这样的计时器 NSTimer timer NSTimer scheduledTimerWithTimeInterval 1 0 target self selector selector updateCountdown user
  • 使用 jax-ws 生成存根失败

    我正在尝试使用 jax ws 为 WSO2 Identity Server 管理服务生成存根https xx xx xx xx 9447 services RemoteUserStoreManagerService wsdl https x
  • bash > 重定向是原子的吗?

    我的 crontab 工作有一个奇怪的问题 我的 crontab 作业执行以下操作 program gt file 然而有时文件会充满我 无法解释的随机数据 我想知道是否可能是之前的 crontab 作业需要更长的时间来运行 并且它以某种方
  • 如何从 SKScene 呈现 UIViewController?

    我通过 Sprite Kit 进入 iOS 我认为这是不明智的 我的目标是在游戏结束时显示 分享 按钮 点击分享按钮应该会出现一个 SLComposeViewController Twitter 分享 场景的内容不应改变 决定 游戏结束 的
  • Zend Form 复选框上的自定义 HTML 输出 setLabel 属性

    我正在渲染一个 Zend Form 复选框 并且我想在其 setlabel 属性处渲染一些自定义 html 我的表单构建模型 terms new Zend Form Element Checkbox confirm terms 在我的视图脚
  • 给定圆心和半径,求圆圆周上点的公式

    我正在编写代码找到圆的圆周上的点 I 有圆的中心点和半径我需要在它周围画一个圆圈 这将帮助我定义边界 请帮我找到圆周上这些点的公式 对于有原点的圆 j k 和半径r x t r cos t jy t r sin t k 你需要运行这个方程t
  • HTTPS 和 SSL 的安全性:-javax.net.ssl.SSLHandshakeException:证书已过期

    我已经尝试过命令进行检查缺少中间证书颁发机构使用这个命令 openssl s client connect mail google com 443 对于我的网站 应该显示证书链 但它只显示一个已经过期的证书 但是当我检查服务器证书配置时ht