2021年12月に、Pleskが動作しているサーバーで、ライセンスキーが自動更新されないというトラブルがあった。
Plesk のライセンスサーバー(ka.plesk.com)に、何らかの変更があったらしく、旧バージョンのOSを使っているサーバーだと、影響があったらしい。
CentOS7 のサーバーは、サーバー会社経由で、ライセンスキーを手動で発行してもらってアップロードしたら、その後うまくいくようになった。
が、CentOS5 のサーバーだけは、さすがに古すぎてどうにもならない。
でもライセンスキーが期限日までに更新できないと、Pleskの操作ができなくなって、新サーバーへの移行をするのにも支障が出るので、何とかしなければならない。
■事象
CnetOS5 + Plesk12.5 のサーバー環境で、
「ツールと設定」-「ライセンス管理」-「Pleskライセンスキー」の「キーを取得」をクリックすると、次のようなエラーが出る。
cURL cannot communicate with license server https://ka.plesk.com/xmlrpc: SSL connect error(35)
cURL cannot communicate with license server https://ka.plesk.com/xmlrpc: couldn’t resolve host name(6)
コンソール画面から、
plesk bin lisence –retrieve
のコマンド入力で対応しようとしても、次のようなメッセージが出て、結果は同じ。
[2022-01-01 00:02:39] ERR [1] /usr/local/psa/admin/bin/logmng ‘/var/log/plesk/install/ai_action_time.xml’ failed with message: logmng: execve failed for /usr/local/psa/admin/sbin/logmng: Exec format error
System error 8: Exec format error
[2022-01-01 00:02:41] ERR [panel] KeyUpdate Result code: 2 Network failure
[2022-01-01 00:02:41] ERR [panel] KeyUpdate Result desc: cURL cannot communicate with license server https://ka.plesk.com/xmlrpc: SSL connect error(35)
cURL cannot communicate with license server https://ka.plesk.com/xmlrpc: couldn’t resolve host name(6)
[2022-01-01 00:02:41] ERR [panel] KeyUpdate Result additional information: cURL verbose output:
* About to connect() to ka.plesk.com port 443
* Trying 195.214.233.82… * connected
* Connected to ka.plesk.com (195.214.233.82) port 443
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSLv3, TLS handshake, Client hello (1):
> SSL data removed for security reason* error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
* Closing connection #0
cURL verbose output:
* Couldn’t resolve host ‘ka.plesk.com’
* Closing connection #0
■原因
2012年12月頃から、Pleskライセンスサーバーへの接続が TLS1.2未満を遮断するように なっていた らしい。
ka.plesk.comは、nslookup で調べると、次の3つのIPアドレスが対応している。
この3種類のどれも、TLS1.2以上で接続しないと、遮断されてしまう。
195.214.233.80
195.214.233.81
195.214.233.82
■対応策
CentOS5 はもともと、TLS1.0 までしか対応できないけれども、openssl と cURL と PHP を新しくして、TLS1.2 で接続できるようにすれば解決するはずである。
が、Pleskの内部コマンド( /usr/local/psa/bin/ )は、独自のPHP環境でコンパイルされており、ソースも暗号化されているので、openssl と cURL と PHP を新しくしても、再コンパイルすることができず、解決できない。
Plesk内部で動作している PHP の実体は、 /usr/local/psa/bin/sw-engine-pleskrun であり、これを再コンパイルできない限り、どうにもならない。
Pleskコマンドのソースは非公開(暗号化)されているので、再コンパイルは、できそうにない。
[root@www bin]# /usr/local/psa/bin/sw-engine-pleskrun -v
PHP 5.6.14 (cli) (built: Oct 5 2015 15:54:43)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with the ionCube PHP Loader v4.7.5, Copyright (c) 2002-2014, by ionCube Ltd., and
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
■対応結果
諦めかけていた頃、年明け早々に、サーバー会社から、別の解決案があることを教えてもらい、見事に解決した。
/etc/hosts ファイルに、 ka.plesk.com の正引きIPアドレスの3種類(195.214.233.80, 195.214.233.81, 195.214.233.82)ではなく別の IPアドレスを設定すること、である。
そのIPアドレスは非公開(機密)なので、インターネットをいくら検索しても見つけることはできない。
でも、Plesk社は旧OSユーザーをバッサリ切り捨てるような対応はしなかった、ということは分かった。
年末年始、いろんな対応策を教えていただいたサーバー会社(GMOクラウド社)に、感謝したい。