当前位置:  开发笔记 > 后端 > 正文

使用Ruby OpenSSL下载和读取证书

如何解决《使用RubyOpenSSL下载和读取证书》经验,为你挑选了1个好方法。

我正在尝试研究如何使用stdlib中的OpenSSL从Web地址/ uri下载证书,然后在警报应用程序中使用它.

目前,我实际上是使用s_client调用openssl可执行文件并解析响应来获取证书但是当我有一个完整的lib来处理这个时,它感觉很傻/笨拙(而且我知道肯定已经这样了).

我花了一些时间试图用Ruby包围我的openssl源代码,但我觉得它被它击败了; 互联网似乎充斥着许多rubyists试图绕过他们的SSL(wince)而不是OpenSSL本身的有用信息,所以我也没有太多运气.

有人能指出我正确的方向吗?也许通过文档或类似的东西能够处理这个特定的任务?如果你有一个更好的例子,但我更愿意尝试自己解决问题.

提前致谢.



1> user3427419..:

实际上它非常简单.要获得远程证书,您需要尝试建立SSL连接,然后从那里读取对等证书,

# Get OpenSSL context
ctx = OpenSSL::SSL::SSLContext.new

# Get remote TCP socket
sock = TCPSocket.new(remote_host, 443)

# pass that socket to OpenSSL
ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)

# establish connection, if possible
ssl.connect

# get peer certificate and do things with it
cert = ssl.peer_cert
cert.version
cert.subject.to_s

现在,这个简单的方法不适用于SNI,但它会让你入门.


如果在这一行之后添加`ssl.hostname = remote_host`,它将与SNI一起使用:`ssl = OpenSSL :: SSL :: SSLSocket.new(sock,ctx)`
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有