As I Please

MTのいんすとーるの練習と、その他びぼうろく・・・

タグ「IO::Socket::SSL」が付けられているもの


bind の入れ替え>openssl の入れ替え > perl の入れ替え > perl moduleのインストールしなおし。

あぁ、依存関係が面倒だった。

bind-9.14.12 : portsで入れると
openssl : ports で。 1.1.1g に。
これで named はちゃんと動き始めたが、libcrypto.so が変わったのでちょっと心配になっていくつかみたら、
いきなり apache (mod_ssl.so)が共有ライブラリ見失った。
apache24 も作り直し。
ここで MTも見てみたら、ssl通信関連のモジュールが見当たらないとか言い始める。
501 Attempt to reload IO/Socket/SSL.pm aborted. Compilation failed in require (LWP::Protocol::https not installed):

もう片っ端から入れ直し。 perl5, p5-LWP-Protocol-https,p5-IO-Socket-SSL。でもこれでも直らないので、探してみたら
perl-Socketを入れ直すらしい。
https://qiita.com/fukuchan-senpai/items/e6d6731b27ead15e22e8

やっとこれで元に復帰した(つもりでいるけど、まだどっかに落とし穴があるに違いない)

bind の入れ替え>openssl の入れ替え > perl の入れ替え > perl moduleのインストールしなおし。

あぁ、依存関係が面倒だった。

bind-9.14.12 : portsで入れると
openssl : ports で。 1.1.1g に。
これで named はちゃんと動き始めたが、libcrypto.so が変わったのでちょっと心配になっていくつかみたら、
いきなり apache (mod_ssl.so)が共有ライブラリ見失った。
apache24 も作り直し。
ここで MTも見てみたら、ssl通信関連のモジュールが見当たらないとか言い始める。
501 Attempt to reload IO/Socket/SSL.pm aborted. Compilation failed in require (LWP::Protocol::https not installed):

もう片っ端から入れ直し。 perl5, p5-LWP-Protocol-https,p5-IO-Socket-SSL。でもこれでも直らないので、探してみたら
perl-Socketを入れ直すらしい。
https://qiita.com/fukuchan-senpai/items/e6d6731b27ead15e22e8

やっとこれで元に復帰した(つもりでいるけど、まだどっかに落とし穴があるに違いない)

pop2imap が certifcate でエラー

imaptoolsの代わりになるものを探すと、あっさりその名もpop2imap。今回の perlでモジュールをいくつか追加するだけでよさそう、と思ったらSSLサーバの認証が厳しくなってた。
普通に使うと、

From pop3 server [popserver] port [110] user [popuser]
To   imap server [imapserver] [ssl] port [993] user [imapuseruser]
TimeZone :[asia/tokyo]
Login POP OK
Unable to connect to imapserver: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed  ...propagated at /usr/local/bin/pop2imap line 242.

と、今回は imap側のみSSLにしているが、エラーになる。
いろいろ検索してみると出てくるが、利用しているモジュール Mail::IMAPClient の中で呼ばれている IO::Socket::SSLでの証明書の取扱が厳格になったため、IMAPサーバで利用している勝手証明書(自己CA署名)の verifyが通らないからのようだ。https://metacpan.org/pod/IO::Socket::SSL#SSL_verify_modeにあるように、serverのときは SSL_VERIFY_NONE,clientとして使うときは SSL_VERIFY_PEERと、なり今回のように imap clientとして動作するときはその正当性を見るらしい。CAルートとして、SSL_ca_file,SSL_ca_path などで設定することもできたり、IO::Socket::SSLをインストールすると入る? Mozzila/CA/cacert.pm を見に行くようになっている。
勝手証明書を指定したり、正規の証明書を取得するのもありだけど、そこそこ面倒なので、単に IO::Socket::SSLを呼ぶときに SSL_VERIFY_NONE にしてしまうのが一番簡単かと。どうするべと思っていたら、
Mail::IMAPClientに、Socketargsという設定があって Mail::IMAPClientから IO::Socket::SSLを呼ぶときにパラメータ設定ができるようになっているのでこれを利用することにする。

*** /usr/local/bin/pop2imap     Thu Dec 27 21:49:13 2018
--- /usr/local/bin/pop2imap_noac        Wed Jan  9 19:53:45 2019
***************
*** 233,238 ****
--- 233,239 ----
                Uid      => 1,
                Debug    => $debugimap,
                Timeout  => $timeout2,
+               Socketargs => [ SSL_verify_mode => 0 ],
        ) ;
        if(!$starttls2) {
                $common{'Ssl'} = $ssl2;
とした、pop2imap_noacを利用。ただし versrion指定があって、
Version note: attribute added in Mail::IMAPClient 3.34
の模様。現在の時点では 3.40 。

pop2imap が certifcate でエラー

imaptoolsの代わりになるものを探すと、あっさりその名もpop2imap。今回の perlでモジュールをいくつか追加するだけでよさそう、と思ったらSSLサーバの認証が厳しくなってた。
普通に使うと、

From pop3 server [popserver] port [110] user [popuser]
To   imap server [imapserver] [ssl] port [993] user [imapuseruser]
TimeZone :[asia/tokyo]
Login POP OK
Unable to connect to imapserver: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed  ...propagated at /usr/local/bin/pop2imap line 242.

と、今回は imap側のみSSLにしているが、エラーになる。
いろいろ検索してみると出てくるが、利用しているモジュール Mail::IMAPClient の中で呼ばれている IO::Socket::SSLでの証明書の取扱が厳格になったため、IMAPサーバで利用している勝手証明書(自己CA署名)の verifyが通らないからのようだ。https://metacpan.org/pod/IO::Socket::SSL#SSL_verify_modeにあるように、serverのときは SSL_VERIFY_NONE,clientとして使うときは SSL_VERIFY_PEERと、なり今回のように imap clientとして動作するときはその正当性を見るらしい。CAルートとして、SSL_ca_file,SSL_ca_path などで設定することもできたり、IO::Socket::SSLをインストールすると入る? Mozzila/CA/cacert.pm を見に行くようになっている。
勝手証明書を指定したり、正規の証明書を取得するのもありだけど、そこそこ面倒なので、単に IO::Socket::SSLを呼ぶときに SSL_VERIFY_NONE にしてしまうのが一番簡単かと。どうするべと思っていたら、
Mail::IMAPClientに、Socketargsという設定があって Mail::IMAPClientから IO::Socket::SSLを呼ぶときにパラメータ設定ができるようになっているのでこれを利用することにする。

*** /usr/local/bin/pop2imap     Thu Dec 27 21:49:13 2018
--- /usr/local/bin/pop2imap_noac        Wed Jan  9 19:53:45 2019
***************
*** 233,238 ****
--- 233,239 ----
                Uid      => 1,
                Debug    => $debugimap,
                Timeout  => $timeout2,
+               Socketargs => [ SSL_verify_mode => 0 ],
        ) ;
        if(!$starttls2) {
                $common{'Ssl'} = $ssl2;
とした、pop2imap_noacを利用。ただし versrion指定があって、
Version note: attribute added in Mail::IMAPClient 3.34
の模様。現在の時点では 3.40 。