【概要】
API通信中にSSL証明の認可にて、処理が弾かれてしまったので、今回fixした方法を備忘として記しておきます。
【環境】
・Rails
・Docker
・DeepL
【原因】
DeepL
の導入後、標記の事象が発生しました。
ポイントとしては、SSL通信を行う設定にdocker側が対応していなかったことや、SSL通信するなどの事象が考えられます。
なお、通常のSSL通信では下記のようにセキュリティの情報を担保されていることを確認できるようになっております。
【対策①】
・取り急ぎAPIにて確認したい場合、SSL証明書の確認を飛ばす方法で確認することができます。
client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
ただし、上記の方法で、本番環境に上げる場合は注意が必要です。
この場合、http通信で行われるので、アプリの危険性が懸念されます。
特に、Google Chrome
などで閲覧する場合、注意喚起される状態になるので信頼性という観点からユーザーの維持が難しくなってきます。
【対策②】
私は下記の方法で解消しました。
client.ssl_config.clear_cert_store
client.ssl_config.set_trust_ca("/etc/ssl/certs")
上記で、クライアントのSSL設定で信頼できる証明書機関(Certificate Authority、CA)を指定しており、ここでは、"/etc/ssl/certs"というパスにある証明書が信頼されるCAとして設定しました。(どうやらSSL自体は発行されていたようですが、正しく指定できていなかった?ようです)
【対策③】
SSL証明書を別で発行しておいて、その情報を紐づけるやり方になります。
ただし、著者の知識が低いために、こちらの方法については参考になりそうなサイトのみの紹介とさせていただきます。
【引用元】