GooglePlayにリリース済みcocos2d-x製AndroidアプリでOpenSSLの警告が表示される(2.2.X系)


2年ほど前にもあったOpenSSLライブラリ要差し替えの問題がまた出現。
OpenSSLのバージョンを1.02f/1.01r以上にする必要がある模様。
とりあえず以下で対処、警告がなくなったのを確認。


ただし、しばらく待てば、対処の入ったv3.11/v2.2.7がリリースされるようなので、急がない人はそれを待って対処するのが良いかも。


→公式の対処情報はこれかも
http://blog.cocos2d-x.org/2016/04/openssl-update/


あとv3.11が出たらしい(けど公式にはまだリンクがない)
#2016.05.12


以下は古い話なので閉じました。





注:以下は2.2.6ベースの話です。
  3.X系用の対処はここでは扱いません。

必要な作業

cocos2d-xソース配下の以下のフォルダをまるごと最新版に置き換えてリビルドする。
/cocos2dx/platform/third_party/android/prebuilt/libcurl


最新版はこれ
https://github.com/cocos2d/cocos2d-x-3rd-party-libs-bin/tree/v2/cocos2dx/platform/third_party/android/prebuilt/libcurl

手順

以下のページの「Download ZIP」からまとめてダウンロードする。
https://github.com/cocos2d/cocos2d-x-3rd-party-libs-bin/tree/v2


解凍後、以下のlibcurlフォルダを
cocos2d-x-3rd-party-libs-bin-2/cocos2dx/platform/third_party/android/prebuilt/libcurl


cocos2d-xソース配下の以下のlibcurlフォルダと置換する
/cocos2dx/platform/third_party/android/prebuilt/libcurl


#上書きコピーではなく置換すること。

確認方法

リビルド後、生成されたapkに対して以下のコマンドを実行すると、OpenSSLのバージョンが確認できる。

unzip -p YOUR_APK_FILENAME.apk | strings | grep "OpenSSL"


ずらずら結果が表示されるが
こんな感じになっていればOK。

SSLv3 part of OpenSSL 1.0.2g 1 Mar 2016
TLSv1 part of OpenSSL 1.0.2g 1 Mar 2016
nopqrsDTLSv1 part of OpenSSL 1.0.2g 1 Mar 2016
MD4 part of OpenSSL 1.0.2g 1 Mar 2016
MD5 part of OpenSSL 1.0.2g 1 Mar 2016
SHA1 part of OpenSSL 1.0.2g 1 Mar 2016
SHA-256 part of OpenSSL 1.0.2g 1 Mar 2016
DlSHA-512 part of OpenSSL 1.0.2g 1 Mar 2016
DES part of OpenSSL 1.0.2g 1 Mar 2016
libdes part of OpenSSL 1.0.2g 1 Mar 2016
Big Number part of OpenSSL 1.0.2g 1 Mar 2016
EC part of OpenSSL 1.0.2g 1 Mar 2016
(1RSA part of OpenSSL 1.0.2g 1 Mar 2016
Diffie-Hellman part of OpenSSL 1.0.2g 1 Mar 2016
Stack part of OpenSSL 1.0.2g 1 Mar 2016
lhash part of OpenSSL 1.0.2g 1 Mar 2016
EVP part of OpenSSL 1.0.2g 1 Mar 2016
ASN.1 part of OpenSSL 1.0.2g 1 Mar 2016
PEM part of OpenSSL 1.0.2g 1 Mar 2016
X.509 part of OpenSSL 1.0.2g 1 Mar 2016
AES part of OpenSSL 1.0.2g 1 Mar 2016

#実際にはもっと表示される


なお、cocos2d-x以外に利用している外部ライブラリがOpenSSLの古いバージョンを使っている場合は、上記対処だけでは足りないので注意(ライブラリ提供者に更新を依頼するか、アップデートされるのを待って対処)。

参考

cocos2d-xの関連スレッド
http://discuss.cocos2d-x.org/t/openssl-problem-again/28270/


上記スレは現在も更新中。
ビルド時にNDK10以上でないとダメとか話題が上がっているのでうまくいかない人は見てみると良いと思う。


なお、Google Playに表示されるワーニングアイコンから飛べる説明のページには、「対処後の最新版をアップロードしてから5時間後に警告が消えたかどうかチェックしてね」みたいなことが書いてあった気がするが、5時間では消えなかった。なので、のんびり待つと良いと思われる。
1日待てばたぶん最新版で再チェックされて結果が更新されると思う。