OpenSSL::Cipher::CipherError 해결 【초초보자】

초보자에 대해 다르면 정말 미안해. 비망록입니다.

OpenSSL::Cipher::CipherError가 발생했습니다.



config/master.key: No such file or directory등의 에러가 나왔을 때도 사용할 수 있을지도. AWS에서 EC2라든지 MySQL라든지 RDS라든지로 개발 환경·프로덕션 환경의 공부중, OpenSSL::Cipher::CipherError가 나왔습니다. 이것은 열쇠의 전달이 잘 되지 않을 때 나오는 에러입니다.

credentials.yml.enc와 master.key가 열쇠 구멍과 열쇠의 관계성이 되고 있습니다만, 프로덕션 환경(나로 말하면 EC2)에 열쇠 구멍과 열쇠가 없거나, 열쇠 구멍과 열쇠가 올바른 것이 아니었다 때때로 OpenSSL::Cipher::CipherError가 발생합니다.

↓이것은 올바르게 보내졌을 때의 흐름

일부러 master.key 만 직접 보냅니다.
어째서 이런 번거로운 짓을!?라고 하면, Git Hub는 누구나 볼 수 있어 키켄! 라고 하는 일로 열쇠만은 Git Hub로부터가 아니라 직접 보내 봅시다~가 되고 있다(일단 그렇게 배웠다)

해결 방법


① 개발 환경(나라면 cloud9)의 config/credentials.yml.enc 삭제
②EDITOR=vim rails credentials:edit #開発環境のターミナル
③scp -i ~/.ssh/EC2の鍵.pem config/master.key ec2-user@IPアドレス:アプリケーション名/config #開発環境のターミナル
④新しくなったcredentials.yml.encをGit Hubへpush #開発環境のターミナル

⑤ 프로덕션 환경(나라면 EC2)에 연결하기
⑥[ec2-user@ip-xxx-xxx-xx-xx appname]$git pull origin master #本番環境のアプリケーション内で行う

에서 해결할 것 같아요.
프로덕션 credentials.yml.enc 및 master.key가 개발 환경과 동일한지 확인하는 경우
[ec2-user@ip-xxx-xxx-xx-xx appname]$find / -name credentials.yml
/home/ec2-user/appname/config/credentials.yml.enc #出力結果
[ec2-user@ip-xxx-xxx-xx-xx appname]$vi /home/ec2-user/appname/config/credentials.yml.enc

에서 vi에 들어가면 볼 수 있습니다. 나는 vi에 익숙하지 않아서 매우 무서웠습니다만,:q!로 보존하지 않고 돌아갈 수 있고,:wq로 보존해 나올 수 있으므로 갑자기 화면이 바뀌어 깜짝 놀라도 침착하면 괜찮아(아마!)


bundle exec rails assets:precompile RAILS_ENV=production

하면,
rails aborted! LoadError: Could not load the 'mysq12' Active Record adapter. Ensure that the adapter is spelled correctly in config/database.yml and that you've added the necessary adapter gem to your Gemfile.

그리고 오류가 나와 음. . . 라고 고민한 이야기. Gemfile이라든지 bundler라든지 여러가지 보았지만 모르겠다···

덤의 결론



mysql12(mysql 주로)가 되어 있었습니다! ! !



아니 진짜 이런! ? 아니 나 바보 너무! ? 고민한 5시간의 낭비! 여러가지 조사했는데 억울하다!

database.yml과 Gemfile을 vi로 고쳐 해결했습니다. orz

치는 실수에주의! 엘과 1의 치는 실수는 10회 이상 하고 있어요? 나, 반성해줘.

좋은 웹페이지 즐겨찾기