java - 忽略过期的ssl证书

2023-12-12

URL myUrl = new URL("https://www.....");

网站的 SSL 证书已过期。如何避免它并使 URL() 起作用?


你应该建立一个TrustManager包装默认的信任管理器,捕获CertificiateExpiredException并忽略它。

注:详见这个答案,这是否安全很大程度上取决于实现。特别是,它依赖于在正确检查其他所有内容之后最后完成的日期验证。

沿着这些思路的东西应该有效:

TrustManagerFactory tmf = TrustManagerFactory.getInstance(
    TrustManagerFactory.getDefaultAlgorithm());
// Initialise the TMF as you normally would, for example:
tmf.init((KeyStore)null); 

TrustManager[] trustManagers = tmf.getTrustManagers();
final X509TrustManager origTrustmanager = (X509TrustManager)trustManagers[0];

TrustManager[] wrappedTrustManagers = new TrustManager[]{
   new X509TrustManager() {
       public java.security.cert.X509Certificate[] getAcceptedIssuers() {
          return origTrustmanager.getAcceptedIssuers();
       }

       public void checkClientTrusted(X509Certificate[] certs, String authType) {
           origTrustmanager.checkClientTrusted(certs, authType);
       }

       public void checkServerTrusted(X509Certificate[] certs, String authType) {
           try {
               origTrustmanager.checkServerTrusted(certs, authType);
           } catch (CertificateExpiredException e) {}
       }
   }
};

SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, wrappedTrustManagers, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

信托经理抛出CertificateExceptions(有关详细信息,请参阅子类)当证书出现问题时。具体说明您想要捕获/忽略的内容。您真正想要验证的所有内容都必须在您捕获的内容可能被抛出之前进行检查,否则您也必须手动验证它。任何比这更轻松的操作(特别是不执行任何操作,因此不会抛出任何异常)将完全忽略证书验证和验证,这与使用匿名密码套件或忽略身份验证大致相同。这将违背使用 SSL/TLS 的安全目的(而不是在到期日上稍微灵活一点)。

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

java - 忽略过期的ssl证书 的相关文章

  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 将 dataLabel 添加到 Highcharts.js 中的面积图

    I want to add a data label to specific point in the Area chart I m using Highchart for making graph I want a data label
  • JavaFX - 尝试使用 BufferedReader 时冻结 - 未关闭?

    我花了好几个小时试图解决这个问题 但它开始让我烦恼 我有一个简单的 JavaFX 应用程序 然后单击按钮时 它 执行Process p pb start 该命令运行 并且可以在终端窗口中看到 但 GUI 完全冻结 A lot of unus
  • 如何在Smarty中关闭html转义

    我在用html checkboxes用于生成选择菜单 问题是在复选框名称中我有一些 html 代码 而 Smarty 转义了它 I have html checkboxes name select menu values user data
  • 我的按钮在 iPhone 6 和 6 plus 上居中,但在 iPhone 5 上则不然

    我确实打开了自动布局 但由于某种原因 我的中心按钮没有针对其他手机尺寸居中 我设置了约束 就像我提到的自动布局一样 所以我有点困惑 所有其他项目 按钮 其他标签等 都位于其应在的位置 除了 iPhone 6 之外的所有型号 顶部的一个特定标
  • 单元格值更改事件,c#

    我有一个 DataGridView 其中有 3 列 数量 费率和金额 DataGridView 是可编辑的 当我在 费率 列中输入一个值时 应立即更改 金额 中的值 Amount Qty rate 它正在发生 但是当我单击任何其他单元格时
  • C# 中如何在不同线程上运行新表单?

    我只是尝试在每次单击按钮时运行一个新线程 这应该创建一个新表单 我在 MainForm 的按钮单击事件中尝试了此操作 private void button1 Click object sender EventArgs e worker1
  • 为什么 IOS7 中 NSAttributedString 的字距调整失败

    我的应用程序有一个格式化为 NSAttributedString 的 UILabel 属性 NSKernAttributeName 1 9 当下面的代码在运行 IOS6 的 iPad 上编译时 kern 按预期工作 在运行 IOS7 的 i
  • 如何找到整数数组中的最大不重复数?

    假设我有一个未排序的整数数组 3 1 4 5 3 2 5 我想找到最大的非重复数 在本例中为 4 5 是无效的 因为它是重复的 我怎样才能实现这个目标 使用无序映射来计算每个元素的频率 作为一种优化 跟踪遇到的最大元素并跳过低于该元素的元素
  • Struts2:如何存储从操作到操作的安全用户名和密码

    在我的登录页面中 我通过用户名和密码 从 jsp 页面获取 登录 然后检查 LDAP 如果凭据正确 则继续浏览其他页面 我想在某个地方存储用户名和密码 因为在接下来的一些页面中 我可能需要它们来制作其他东西 我想将它们存储在会话中 但我担心
  • 在 TextInput 中写入一个字符后键盘隐藏问题(Flatlist 标题内的文本输入)

    我花了两天时间解决这个问题 问题是 当我将 TextInput 放入 Flatlist 中时 TextInput 的行为已更改 键盘在写入每个字符后失去焦点 版本 反应本机 0 63 2 反应 16 13 1 反应 dom 16 13 1
  • 为什么我不能向下转换指向模板参数中成员的指针?

    如果我创建一个指向基成员的指针 通常可以将其转换为指向派生成员的指针 但在像下面的 Buzz 这样的模板中使用时则不行 其中第一个模板参数影响第二个模板参数 我是否正在与编译器错误作斗争 或者标准是否真的强制要求这不起作用 struct F
  • Java Date 对象显示未来的时间

    我正在当前时间之前的某个时间创建一个新的日期对象 如果我在今天前 1 天展示它 效果很好 但如果我想显示 30 天前 它会转到未来 Date date new Date long sometime 24 60 60 1000 a day S
  • Python-将部分子列表的元素转换为int

    假设您有一个类似的列表 a 1 2 3 b 4 5 6 c 7 8 9 我想将每个子列表的索引 1 到 2 的元素转换为整数 因为您可以看到它们本身就是字符串 是否可以 如果是 那么最短的方法是什么 到目前为止我所做的是 lists a 1
  • 当我在模拟器中启动应用程序时,Xcode 被阻止在“附加到(应用程序名称)”

    我知道有很多帖子都有同样的问题 我花了至少 2 个小时阅读它们 并尝试了我在回复中看到的所有内容 但仍然不起作用 我不知道该怎么办了 有人能帮我吗 我使用 Xcode 4 2 1 这个问题对我来说经常发生 解决方案总是杀死名为的进程Simu
  • 如何从一组输入的数字中获取最大值和最小值?

    以下是我到目前为止所拥有的 我不知道如何排除 0 作为最小数字 分配要求 0 作为退出编号 因此我需要在最小字符串中出现除 0 之外的最小数字 有任何想法吗 int min max Scanner s new Scanner System
  • 如何在 iPhone 应用程序中实现 activesync 协议?

    如何在 iPhone 应用程序中实现 activesync 协议 任何建议 任何文档和教程都很好 我已阅读Exchange ActiveSync 和 iOS 4 设备来自苹果 有这方面的真正文档吗 尽管在评论中提出了问题 但您可能正在寻找E
  • android asynctask 与线程

    我创建了一个 asynctask 并在其 doInBackground 方法中启动了一个如下线程 private class myAsyntask extends Asynctask doInBackground Thread t new
  • 在 SQL Server 中实施审计跟踪的最佳方法?

    我不知道这些要求是否标准 但我想知道是否有一个解决方案可以执行以下操作 对于指定的一组表 在相关表的审核版本中更改记录之前保留记录的副本 我宁愿不必为每个表都编写此代码 我想知道是否有一个可以在 SQL Server 上安装的解决方案来为您
  • 调用没有名称的 Java 方法

    我正在查看下面的代码 发现有些奇怪的东西 public class Sequence Sequence System out print c System out print y public static void main String
  • java - 忽略过期的ssl证书

    URL myUrl new URL https www 网站的 SSL 证书已过期 如何避免它并使 URL 起作用 你应该建立一个TrustManager包装默认的信任管理器 捕获CertificiateExpiredException并忽