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

时间:2015-12-04 18:45:28

标签: postgresql ssl openssl erlang

以下是我在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=verify-full一样在python中设置psycorg2

psycopg2.connect("host=example.com 
                  user=user
                  dbname=whatever 
                  sslrootcert=cacert.crt
                  sslcert=user.crt
                  sslkey=user.nopassword.key
                  sslmode=verify-full")

在这两种情况下一切正常,但我有两个问题:

  1. {verify, verify_peer}选项中的epgsql是否等同于sslmode=verify-ca
  2. 如何配置sslmode=verify-full
  3. 为什么我认为对第一个问题的回答是肯定的:
    http://www.erlang.org/doc/man/ssl.html,section" ssl选项说明 - 对于服务器和客户端来说很常见":

    在verify_peer模式下的默认选项verify_fun:

    {fun(_,{bad_cert, _} = Reason, _) ->
         {fail, Reason};
        (_,{extension, _}, UserState) ->
         {unknown, UserState};
        (_, valid, UserState) ->
         {valid, UserState};
        (_, valid_peer, UserState) ->
             {valid, UserState}
     end, []}
    

    如果错误为{bad_cert, unknown_ca},则会失败。

0 个答案:

没有答案