WordPressで更新エラー

サーバの openssl が古過ぎる

ファイルやフォルダのパーミッションの問題なら、ちょっと検索すれば大量に情報がありますのでなんとか対応できるのですが、サーバ側のとある問題により自動更新が利用できないという場合がたまにあり、これはあまりウェブ上に情報がありませんでしたのでこちらにメモしておきます。

具体的には、更新ボタン押下時などにこんなエラーメッセージが表示されるものです。

予期しないエラーが発生しました。
cURL error 35: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm
ダウンロードに失敗しました。

WordPress管理画面からバージョンアップの更新ボタンを押した際など、WordPress本体から公式などのサイトに裏でアクセスが発生するわけですが、この際にSSL通信でデータを拾ってこようとします。ここで、SSL通信を担う openssl というサーバ側のモジュールがセキュリティアップデートされておらず、正しくSSL通信できないというものです。

WP本体を書き換える(応急処置)

サーバ側で openssl をアップデートしないといけないため、レンタルサーバでは完全解決は難しいでしょう。その他の解決方法としては、サーバを新しめのものに移転するか、WP本体を手動でダウンロードして手動でFTPアップロードする方法です。ですが、時間がない・どうしても自動更新でアップデートしたい、という場合は、以下の方法でWP本体プログラムに手を入れて、応急処置的に対応が可能です。

curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );

↓

# curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, false );

尚、WordPressのバージョンによっては、上記のファイルに該当行が無い場合があります。その場合は以下の修正をお試しください。

'sslverify' => true,

↓

# 'sslverify' => true,
'sslverify' => false,

上記ファイルの修正後、再度WordPress管理画面から更新を行うとすんなり処理が始まるはずです。 尚、この方法で無事更新出来た場合、上記で手入れしたファイル自体が新しく書き換えられてしまう場合があり、結局また修正する必要がでてきます。
なので応急処置、なのです。

早く移転を

稀なケースなのかなーと思っていたのですが、老舗の大手レンタルサーバで2、3案件該当しました。新しいプランばかりに手をかけて、古いプランのまま利用しているユーザに対してはアンセキュアだろうと関係なく見捨ててる感じですね。
はっきり言わせていただければ、そんな危険なサーバは早いところ捨てて移転してください!

参考にさせていただいたサイト