kotlin 连接到自签名 https 服务器

2023-12-31

我有以下 kotlin 代码:

val urlPath = "https://10.0.2.2:8080"
var data: String
try {
    data = URL(urlPath).readText()
} catch (e: Exception) {
    Log.e("doInBackground", "Exception caught: ${e.localizedMessage}")
    error = when (e) {
        is MalformedURLException -> "Invalid URL"
        is IOException -> "Network Error"
        else -> {
            "Network error: ${e.localizedMessage}"
        }
    }
}

如果我使用上面的代码连接到http服务器,上面的代码就可以工作。但是,当我尝试使用自签名证书连接到 https 服务器时,它失败了。有没有办法允许本地主机上的 https 连接(仅),即使证书是自签名的?


这是一个读取的示例https://google.com https://google.com使用 JSSE,它实际上信任每个证书,并且不应该有效地使用。

fun main(args: Array<String>) {
    val urlPath = "https://google.com"
    try {
        (URL(urlPath).openConnection() as HttpsURLConnection).apply {
            sslSocketFactory = createSocketFactory(listOf("TLSv1.2"))
            hostnameVerifier = HostnameVerifier { _, _ -> true }
            readTimeout = 5_000
        }.inputStream.use {
            it.copyTo(System.out)
        }
    } catch (e: Exception) {
        TODO()
    }
}


private fun createSocketFactory(protocols: List<String>) =
    SSLContext.getInstance(protocols[0]).apply {
        val trustAllCerts = arrayOf<TrustManager>(object : X509TrustManager {
            override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
            override fun checkClientTrusted(certs: Array<X509Certificate>, authType: String) = Unit
            override fun checkServerTrusted(certs: Array<X509Certificate>, authType: String) = Unit
        })
        init(null, trustAllCerts, SecureRandom())
    }.socketFactory

我有一个小图书馆可以存放这些东西here https://github.com/s1monw1/TLSLibrary,既不是最新的也不是已发布的。尽管如此,它还是提供了一个简单的 DSL 来设置 TLS/SSL 套接字,并提供了 https 连接的方法。

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

kotlin 连接到自签名 https 服务器 的相关文章

  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • Scala(或 Java)中泛型函数的特化

    是否可以在 Scala 中专门化泛型函数 或类 例如 我想编写一个将数据写入 ByteBuffer 的通用函数 def writeData T buffer ByteBuffer data T buffer put data 但由于 put
  • 如何在命令提示符中检查 JAVA_OPTS 值?

    我们的应用程序部署 JBoss 服务器然后抛出错误 PermGen space 然后在 jboss bat 和配置文件中设置 permgen 变量中的 java OPTS JAVA OPTs 中是否有值 assige 如何检查 如何在命令提
  • 更改 RowLayout SWT Java 中元素的顺序

    有没有办法更改在行布局中创建的元素的顺序 我想将其显示在元素中 首先显示 例如 如果我创建 element1 则 element2 element3 element4 我想看到的布局为 元素4 元素3 元素2 元素1 这意味着最后创建的元素
  • 在多模块项目中访问绑定适配器

    我有一个多模块项目 其中应用程序模块包含我的绑定适配器 而我的功能模块取决于我的应用程序模块 因为它是动态功能模块 应用程序 包含绑定适配器 gt 动态功能模块 存在布局的地方 我在所有模块中启用了数据绑定和 kapt 我无法成功构建应用程
  • Hibernate @OneToMany 注释到底是如何工作的?

    我对 Hibernate 还很陌生 我正在通过教程学习它 我在理解到底如何一对多注释作品 所以我有这两个实体类 Student代表一个学生并且Guide代表指导学生的人 因此 每个学生都与一名向导相关联 但一名向导可以跟随多个学生 我想要一
  • 更改弹出对话框的背景颜色

    我编写了显示弹出对话框的 android 代码 但我想将背景颜色从黑色更改为白色 然后更改文字颜色 这是对话框的代码 mPrefs PreferenceManager getDefaultSharedPreferences this Boo
  • 三星 tab2 平板电脑的 Android 开发

    是否可以使用 Eclipse 在 Samsung Tab 2 平板电脑中开发 Android 应用程序 需要安装什么驱动吗 当然可以 你必须安装标准的android开发工具 SDK ADT ad eclipse Juno最新版本 从这里下载
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • Android 和 iPhone 应用程序可以使用同一个 Facebook 应用程序 ID 吗?

    我有两个具有相同名称和相同功能的应用程序 一款在安卓市场 一款在应用商店 目前仅通过 iPhone 应用程序 您可以使用我创建的 Facebook 应用程序将您的分数发布到 Facebook 墙上 我的问题是我可以使用相同的 Android
  • Listview里面只有一个Element

    您好 我正在尝试将列表视图放入列表视图中的列表视图中 唯一的问题是只有第一个列表视图正确显示所有元素 此后的每个列表视图仅包含一个元素 UPDATE 创建我自己的不可滚动列表视图解决了这个问题 https stackoverflow com
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • Android 等距游戏引擎 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否有任何现有的开源或商业解决方案
  • 条件查询:按计数排序

    我正在尝试执行一个标准查询 该查询返回 stackoverflow 中回答最多的问题 例如常见问题解答 一个问题包含多个答案 我正在尝试使用标准查询返回按每个问题的答案数排序的回答最多的问题 任何人都知道我应该在 hibernate cri
  • 按照说明后“找不到您尝试购买的商品”

    所以我按照以下说明进行操作http developer android com google play billing billing admin html http developer android com google play bi
  • 我可以在 Android Market 上出售我的 SL4A 应用程序吗?

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用 SL4A 在 Android 上使用 Python 开发一个应用程序 并且我想知道是否可以将其作为应用程序在 Android Market
  • 有什么方法可以禁用/覆盖 Galaxy Tab 4 上的多任务按钮吗? [复制]

    这个问题在这里已经有答案了 我们编写了一个工业控制应用程序 并随我们的制造产品预装在三星 Galaxy 平板电脑上 我们使用的平板电脑是运行 Honeycomb 的 Tab 10 但我们无法再获得足够的 OEM 平板电脑 因此我们改用运行
  • RecyclerView 不调用 onCreateViewHolder 或 onBindView

    没有收到任何错误 所有数据似乎都有效 由于某种原因 没有调用与视图相关的方法 我已确定以下事项 getItemCount 是唯一被调用的适配器方法 并且返回一个正整数值 我知道这将是你们将要查看的区域 构造函数正在被调用 成员变量有效 Pa

随机推荐

  • 将 JWK json 转换为公钥 golang (lestrrat-go)

    我使用 JWKS 格式从身份验证服务提供公钥 该公钥可用于验证来自该身份验证服务的令牌 但是 要执行验证 我需要从 JWK 重建公钥 我该如何转换它 type JWKeys struct Keys JWKey json keys type
  • 多选到数组

  • 使用 SharePoint 客户端对象模型检查列表列是否存在?

    使用 SharePoint 2010 中的客户端对象模型 C 如何确定给定列表中是否存在指定的列 字段 名称 谢谢 魔术安迪 刚刚在搜索相同的东西时发现了这个 但看起来 Sharepoint 2010 有内置的东西 至少对于服务器模型 li
  • 图像未通过 android webview 加载

    我有一个加载网页的网络视图 有时该网页中有图片 但是 我遇到了 2 个图像无法加载的情况 并且每个情况都给出了不同的结果 结果 1 网页已加载 但图像未加载 使用的格式 jpeg 结果 2 网页已加载 但图像未加载 然而 在该图像所在的位置
  • 转义保留字

    Sitecore 提供了一种转义 Sitecore 查询中包含不喜欢字符的单词的方法 此类字符包括连字符和空格 为了简化我的生活 我编写了一个简单的辅助函数 可以转义 Sitecore 查询的每个部分 并且它运行良好一段时间 public
  • Spring Security仅用于授权。外部认证

    正如标题所述 我正在开发一个 Web 应用程序 该应用程序从外部应用程序接收用户身份验证信息 我的应用程序的弹簧控制器获取用户信息并将其存储在会话中 我想在 Spring Security 中对这个用户进行身份验证 然后使用他的角色授予 拒
  • 获取作为输入文本字段的数据表单元格值

    我正在使用 javascript 数据源生成 DataTable 这data从对 nodejs 的 ajax 调用返回 该调用查询 SQL Server DB 表并返回 2 列 均为数值数据 我再添加 2 列来保存输入字段 默认值为 0 以
  • IP 本地化:映射 ip->location 随着时间的推移而固定?

    我正在管理一个网络平台 想要获取一些统计数据 了解我的用户来自哪里 我可以存储远程 IP 并且我知道有本地化服务可以将 IP 映射到地理位置 这个映射是如何完成的 是否有固定的表 哪个IP地址分配给哪个地区 我必须在访问时请求映射还是可以在
  • 如何禁用或忽略 Dependabot 拉取请求?

    我们希望使用 Dependabot 来了解更新的依赖项 但我们不希望 Dependabot 自行创建拉取请求 也不希望自动构建 我们使用 GitHub 进行代码 使用 Azure DevOps 进行构建 文档中没有明确的提示 https d
  • 生成密码重置密码

    我正在做一个允许用户重置密码的模块 我注意到大多数网站都提供了一个确认链接 其中包含具有唯一哈希值的查询字符串 我的问题是 每次同一用户请求忘记密码时 如何生成这个唯一的哈希值 我应该将此哈希存储在数据库中并稍后使用它进行验证吗 会安全吗
  • 在 SQL Server 中强制部分连接顺序

    Edit 人们很难理解我想要什么 这里有一些漂亮的图片 详细地解释了它 首次加入交易 to Strange 到目前为止的结果 Customer Invoice TransactionID Mass Length LeptonNumber I
  • C++ 参数传递查询(包括代码示例和输出)

    我再次来到这里是因为 C 的课程材料根本没有教得很好 该问题给出了使用几个函数定义和对这些函数的调用 并期望我们说明输出以及到底发生了什么 我已经执行了这些功能 并试图对正在发生的事情提出一些理由 但如果有人可以帮助我 我将非常感激 函数定
  • 如何从列表理解而不是嵌套列表中获得平坦的结果?

    我有一个清单A 和一个函数f其中需要一个项目A并返回一个列表 我可以使用列表理解来转换所有内容A like f a for a in A 但这会返回一个列表列表 假设我的输入是 a1 a2 a3 导致 b11 b12 b21 b22 b31
  • 是否可以保存一组断点?

    我有一组断点 用于调试一个问题 当我想调试其他东西时 这些断点很烦人 所以我需要禁用 删除它们 但是 我觉得我可能希望稍后能够重新创建第一组断点 是否可以保存所有当前活动的断点 以便只需一次操作即可在不同组断点之间切换 如果我有 30 个断
  • 安装 ffi 时出错

    似乎可以解决这个问题 gem install ffi Building native extensions This could take a while ERROR Error installing ffi ERROR Failed to
  • 如何为给定外群的一组物种生成所有可能的纽维克树排列?

    如何为给定外群的一组物种生成所有可能的纽维克树排列 对于那些不知道什么是 Newick 树格式的人 可以在以下位置找到一个很好的描述 https en wikipedia org wiki Newick format https en wi
  • 检查字符串是否有效 MySQL UTF8?

    我有一个编码为 utf8 的 MySQL 列 那个 utf8 实际上并不是完整的 utf8 集 但是仅 BMP 字符 长度最多 3 个字节 http dev mysql com doc refman 5 5 en charset unico
  • Expo XDE“超时超过 60000 毫秒”?

    我正在使用 Expo XDE 为我的第一个 React Native 应用程序创建一个新项目 但是每当我单击 创建新项目 时 它就会开始下载一些内容并出现错误 不知道在哪里增加这个超时值 我检查了expo的文档 但找不到与此相关的任何内容
  • 使用 Objective C 中的类别私下扩展协议

    做了一些搜索 但没有找到太多 但想知道是否可以扩展协议 目前 在 MyDelegate h 中 有 protocol MyDelegate
  • kotlin 连接到自签名 https 服务器

    我有以下 kotlin 代码 val urlPath https 10 0 2 2 8080 var data String try data URL urlPath readText catch e Exception Log e doI