Postgresql 使用带有sslmode=verify full的epgsql连接到postgres

Postgresql 使用带有sslmode=verify full的epgsql连接到postgres,postgresql,ssl,openssl,erlang,Postgresql,Ssl,Openssl,Erlang,下面是我如何在erlang中使用epgsql连接到postgres实例: epgsql:connect("example.com", "user", "secret", [{database, "whatever", {ssl, true}, {cacertfile, "cacert.crt"},

下面是我如何在erlang中使用
epgsql
连接到postgres实例:

epgsql:connect("example.com", 
               "user", 
               "secret", 
               [{database, "whatever", 
                 {ssl, true}, 
                 {cacertfile, "cacert.crt"},
                 {certfile,   "user.crt"},
                 {keyfile,    "user.nopassword.key"},
                 {verify, verify_peer},
                 {fail_if_no_peer_cert, true}
                ])
我无法在这里设置
sslmode=verifyfull
,就像python中的
psycorg2
一样:

psycopg2.connect("host=example.com 
                  user=user
                  dbname=whatever 
                  sslrootcert=cacert.crt
                  sslcert=user.crt
                  sslkey=user.nopassword.key
                  sslmode=verify-full")
在这两种情况下,一切正常,但我有两个问题:

  • epgsql
    选项中的
    {verify,verify_peer}
    是否等同于
    sslmode=verify ca
  • 如何配置
    sslmode=verify full

  • 为什么我认为第一个问题的答案是肯定的:
    ,第节“ssl选项说明-服务器和客户端通用”:

    验证对等模式下的默认选项验证乐趣:

    {fun(_,{bad_cert, _} = Reason, _) ->
         {fail, Reason};
        (_,{extension, _}, UserState) ->
         {unknown, UserState};
        (_, valid, UserState) ->
         {valid, UserState};
        (_, valid_peer, UserState) ->
             {valid, UserState}
     end, []}
    
    当错误为
    {bad\u cert,unknown\u ca}
    时,此操作将失败