25
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

herokuの環境変数に登録したRSA公開鍵からOpenSSLオブジェクトを生成する方法

Posted at

herokuの環境変数にRSA公開鍵を登録し、それを使ってOpenSSLオブジェクトを生成する際に手間取ったのでまとめます。

## はじめに

はじめに、以下の様な形でコードを書きました。

open_ssl_obj = OpenSSL::PKey::RSA.new ENV['RSA_PRIVATE_KEY']

そしてherokuの環境変数は以下のように設定しました。

$ heroku config:set RSA_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...中略...-----END PRIVATE KEY-----\n"

しかし、このコードを実行した際に以下のエラーが起こりました。

OpenSSL::PKey::RSAError (Neither PUB key nor PRIV key: nested asn1 error)

色々と試していくと以下のようなことが分かりました。

  • ローカル環境にて環境変数ではなく、直接RSA公開鍵の内容を入れて実行する → 成功!
  • ローカル環境にて環境変数にRSA公開鍵を設定し、実行する → 成功!
  • herokuにて環境変数ではなく、直接RSA公開鍵の内容を入れて実行する → 成功!

heroku configENV['RSA_PRIVATE_KEY'] の値を確認したのですが、値自体は合っていました。

解決方法

またもや色々と調べた結果、以下のコードで解決しました。

open_ssl_obj = OpenSSL::PKey::RSA.new ENV['RSA_PRIVATE_KEY'].gsub("\\n", "\n")

どうもherokuの環境変数に設定した値に \n や '&' などがあった場合は、エスケープされる様子。
なので、コード上で読み込む際にそのエスケープされた部分を消してあげることが必要なようです。

25
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?