使用 Elixir 和 Erlang ssl 模块获取 SSL 证书
Obtaining SSL cert using Elixir and Erlang ssl module
我正在尝试借助 tls_certificate_check
库、Elixir 和对 Erlang :ssl
模块的一些调用来验证我的网站 SSL 证书。最终目标是获取证书的到期日期,可能还有一些其他元数据。这是我的代码:
defmodule ElixirSslCheck do
def check do
host = "www.lawlorbagcal.org"
options = :tls_certificate_check.options(host)
:ssl.connect(host, 443, options, 5000)
end
end
在 iex
中 运行 之后,我看到了这个输出:
iex(4)> ElixirSslCheck.check
{:error,
{:options,
{:socket_options,
[packet_size: 0, packet: 0, header: 0, active: false, mode: :binary]}}}
我不明白这是什么意思。阅读有关 :ssl.connect
函数的文档,我看到规范说我应该在 error
元组中接收 reason
:
connect(Host, Port, TLSOptions, Timeout) ->
{ok, sslsocket()} |
{ok, sslsocket(), Ext :: protocol_extensions()} |
{error, reason()} |
{option_not_a_key_value_tuple, any()}
我回来的好像不是理由。我正在使用 tls_certificate_check
库,因为我认为它提供的 TLS 选项可以帮助我解决与我的 SSL 证书相关的任何奇怪问题。也就是说,它是通配符让我们加密证书。
任何人都可以帮助我进一步调试它并让我朝着正确的方向前进吗?一旦我解决了连接问题,我就在想下一步是调用 :ssl.peer_cert
,我假设这会引导我到达证书到期日期等。
原来我应该为主机参数使用字符字符串而不是字符串:
defmodule ElixirSslCheck do
def check do
host = 'www.lawlorbagcal.org'
options = :tls_certificate_check.options(host)
:ssl.connect(host, 443, options, 5000)
end
end
不同之处在于使用单引号而不是双引号。这与 :tls_certificate_check
库无关。
我正在尝试借助 tls_certificate_check
库、Elixir 和对 Erlang :ssl
模块的一些调用来验证我的网站 SSL 证书。最终目标是获取证书的到期日期,可能还有一些其他元数据。这是我的代码:
defmodule ElixirSslCheck do
def check do
host = "www.lawlorbagcal.org"
options = :tls_certificate_check.options(host)
:ssl.connect(host, 443, options, 5000)
end
end
在 iex
中 运行 之后,我看到了这个输出:
iex(4)> ElixirSslCheck.check
{:error,
{:options,
{:socket_options,
[packet_size: 0, packet: 0, header: 0, active: false, mode: :binary]}}}
我不明白这是什么意思。阅读有关 :ssl.connect
函数的文档,我看到规范说我应该在 error
元组中接收 reason
:
connect(Host, Port, TLSOptions, Timeout) ->
{ok, sslsocket()} |
{ok, sslsocket(), Ext :: protocol_extensions()} |
{error, reason()} |
{option_not_a_key_value_tuple, any()}
我回来的好像不是理由。我正在使用 tls_certificate_check
库,因为我认为它提供的 TLS 选项可以帮助我解决与我的 SSL 证书相关的任何奇怪问题。也就是说,它是通配符让我们加密证书。
任何人都可以帮助我进一步调试它并让我朝着正确的方向前进吗?一旦我解决了连接问题,我就在想下一步是调用 :ssl.peer_cert
,我假设这会引导我到达证书到期日期等。
原来我应该为主机参数使用字符字符串而不是字符串:
defmodule ElixirSslCheck do
def check do
host = 'www.lawlorbagcal.org'
options = :tls_certificate_check.options(host)
:ssl.connect(host, 443, options, 5000)
end
end
不同之处在于使用单引号而不是双引号。这与 :tls_certificate_check
库无关。