使用snowflake.connector搭配带密码的PKCS8格式RSA私钥时遇类型错误求助
snowflake.connector搭配带密码的PKCS8格式RSA私钥时遇类型错误求助
我来帮你捋捋这个问题哈,你碰到的TypeError: Password was given but private key is not encrypted报错,核心原因是你生成的PKCS8格式私钥根本没被加密,虽然你在代码里传了密码参数,但密钥本身是明文状态的,snowflake的连接器自然就搞不懂为啥你要给密码了~
咱们来拆解下问题根源:
你用的生成密钥命令是:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8
这个命令里没有指定加密算法和密码输入的参数,openssl默认会生成未加密的PKCS8私钥。你可以自己打开生成的rsa_key.p8文件看看,开头如果是-----BEGIN PRIVATE KEY-----,那就是未加密的;如果是-----BEGIN ENCRYPTED PRIVATE KEY-----才是带加密的状态。
解决方法很简单,只要修改生成密钥的命令,加上加密相关的参数就行,比如用AES-256-CBC加密算法,同时让openssl在生成时提示你输入密码:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -v2 aes-256-cbc -passout stdin
运行这个命令时,会让你输入并确认密码,这样生成的私钥就是真正带加密的PKCS8格式了。
之后你再用原来的代码连接Snowflake,就不会再报这个类型错误啦~
备注:内容来源于stack exchange,提问作者Stefano G.
相关产品推荐
相关产品推荐

