通过使用 OpenSSL

了解如何使用 OpenSSL 生成私钥对和公钥对。

关于本任务

基于密钥的身份验证涉及生成一对加密密钥文件。 这些文件由私人密钥和公共密钥组成,可唯一识别用户身份。 与使用用户名和密码等基本方法相比,配对密钥验证可提供更高水平的验证安全性。 这种身份验证方法需要 2048 位 RSA 密钥对。

使用 OpenSSL 生成用于隐私增强邮件 (PEM) 的私钥对。
注意: 数据库连接器中的 Snowflake 数据库仅支持密钥对身份验证。

过程

  1. 在系统中安装 OpenSSL。
  2. 打开命令提示符,使用 OpenSSL 命令生成密钥对。
  3. 使用以下命令生成私钥和证书:

    openssl req -x509 -newkey rsa:2048 -keyout -out -sha256 -days 730 -nodes -subj “/C={country}/ST={state}/L={city}/O={organization}/OU={organization unit}/CN={common_name}

    示例 openssl req -x509 -newkey rsa:2048 -keyout privatekey.pem -out my_cert.pem -sha256 -days 730 -nodes -subj "/C=US/ST=Ohio/L=Columbus/O=Software Co/OU=Adapters/CN=soco"

    例如,该命令以 PEM 格式生成 2048 位 RSA 私钥: -----BEGIN PRIVATE KEY----- MIIE6T... -----END PRIVATE KEY-----

  4. 获得私钥后,使用以下命令生成相应的公钥 openssl rsa -in {privatekey.pem} -pubout -out {publickey.pub}

    示例 openssl rsa -in privatekey.pem -pubout -out pubkey.pub

    例如,该命令从 PEM 格式的私钥中提取公钥: -----BEGIN PUBLIC KEY----- MIIBIj... -----END PUBLIC KEY-----

    将私钥和公钥安全地存储在本地目录中,并记录文件的路径。 私人密钥以 PKCS#12 格式保存,并使用口令加密。

  5. 使用以下命令生成 pkc12 或 jks 格式的密钥存储文件: openssl pkcs12 -export -name {alias} -in {cert.pem} -inkey {privatekey.pem} -out {key.p12}

    示例 openssl pkcs12 -export -name privatekey -in my_cert.pem -inkey privatekey.pem -out mykeystore.p12

  6. 接下来,配置 Snowflake 数据库以进行配对密钥验证。
    • 在 Snowflake 中创建用户名和密码。
    • 将公钥设置为 Snowflake 用户,以使用密钥对身份验证。 您必须拥有 ACCOUNTADMIN 角色才能对用户进行编辑。
    • 在 Snowflake 中使用以下命令更改用户,使其使用配对密钥验证,并用公钥文件中的内容替换 rsa_public_key

      alter user <your_username> set rsa_public_key='<your_public_key>'

      例如 ALTER USER JOHN SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtD7m97G2h

      9sNdkWeDBeyFhgUPLu2wbccYXT3vXwDudL2qFm7W6PxVaEj/k1bFeKcOHDI2jVVeHz

      U1awg1wxBJ3Jd2GJ9dYNmjGhovLSrthbKbGMavlwU +QIDAQAB

  7. 通过单击项目 > 选择项目 > 配置 > 常规 > 证书 > 新证书 > 密钥库添加先前生成的密钥库文件。
  8. 转到连接器选项卡,选择数据库连接器。
  9. 基本配置部分添加详细信息。
  10. 高级配置部分,选择密钥存储别名。 还可根据需要设置其他属性
  11. 测试连接以验证数据库连接。 如果连接成功,则会出现成功信息。
  12. 使用 Snowflake 客户端连接 Snowflake ,测试密钥对身份验证。 您无需输入密码即可登录。