在 Elixir Phoenix Ecto 的 Postgres Adapter 中,ssl_opts 是一个用于配置 SSL/TLS 连接的选项。它明确了在连接到 Postgres 数据库时所需的特定 SSL 配置。具体来说,ssl_opts 可以接受以下选项:
:verify
- 用于指定 SSL/TLS 连接的验证级别。可能的值为 :verify_none
, :verify_peer
, :verify_full
:depth
- 用于指定要验证的证书链的最大深度。
:cacertfile
- 指向包含 CA 证书列表的文件的路径
:certfile
- 指向包含它的证书的文件的路径,如果证书使用链式认证,则必须指定此选项。
:keyfile
- 指向包含私钥的文件的路径,如果证书使用链式认证,则必须指定此选项。
:ciphers
- 指定 SSL/TLS 使用的密码套件,以逗号分隔的字符串。
:ecdh_curve
- 指定 SSL/TLS 使用的 ECDH 曲线。
:reload_cert_interval
- 在达到指定的时间间隔后重新加载 ssl_opts。
下面是一个示例,在这个示例中,我们定义了一个 ssl_opts 选项,并将其传递给了 Ecto 的 Postgres Adapter:
ssl_opts = [
cacertfile: "/path/to/ca/cert/file",
certfile: "/path/to/cert/file",
keyfile: "/path/to/key/file",
verify: :verify_peer
]
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "my_db",
hostname: "localhost",
ssl: true,
ssl_opts: ssl_opts
在这个示例中,我们将 ssl_opts 选项传递给 Ecto 的 Postgres Adapter。这将导致建立一个 SSL/TLS 连接,并使用我们定义的选项进行配置。请注意,我们还将 :ssl
选项设置为 true
,这是说我们要使用 SSL/TLS 连接,而不是普通的连接。
值得注意的是,ssl_opts 选项是可选的。您只需要在需要 SSL/TLS 连接的时候才需要定义它。否则,您可以忽略它并使用普通的 Postgres 连接。
通过理解和使用 ssl_opts 选项,我们可以轻松地通过 Elixir Phoenix Ecto 的 Postgres Adapter 建立安全可靠的 Postgres 数据库连接。