我有一些证书文件,即.key文件,其中说:
-----BEGIN RSA PRIVATE KEY-----
IEpAIBAAKCAQEAwAwxt4edIh3UuK8r5
....blablabla..................
QSNoquaasdsaKDybrezemVqCxsQjg==
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
因此,这是RSA私钥。
我曾经从这样的文件加载它们:
@private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file))
Run Code Online (Sandbox Code Playgroud)
但是,由于我使用的是Heroku,所以我打算将证书另存为它们在环境变量中的值。
所以我将它们粘贴到了我的.env文件中
COMPANY_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKC.....\n-----END RSA PRIVATE KEY-----"
Run Code Online (Sandbox Code Playgroud)
是的,我在Heroku中基于多行配置变量切换了\nfor显式。所以现在我的代码看起来像这样:\\n
@private_key = OpenSSL::PKey::RSA.new(ENV['COMPANY_KEY'])
Run Code Online (Sandbox Code Playgroud)
而且,如果我从控制台运行它,则会得到构建的对象。但是,如果我尝试从Web服务器(基于Rails 4.2.6的Puma 3.4.0,Ruby 2.2.3)运行它,它会惨不忍睹:Neither PUB key nor PRIV key:: nested asn1 error在尝试运行同一行时。
如果我使用调试控制台,则可以看到读取的文件看起来像
"Line 1\\nLine3\\nLinea3"这样……
我很确定这与文件格式有关,但是我全都没有想法,如果遇到像我这样的问题,也许可以帮上忙。