pkgsrcを最近のものにupdateして,make updateをしていたら,pidginもupdateされました.
そして,MSNに繋がらなくなりました...
「Invalid certificate chain」というメッセージが出てきて接続できません.
[ヘルプ]→[デバッグ・ウィンドウ]でデバッグ情報を確認すると,
certificate/x509/tls_cached: Certificate omega.contacts.msn.com is not yet valid, will be at Tue Jan 24 22:23:31 4868
こんなこと言われてます.4868年からactivateされるっていうのはどういうことなんでしょうか...parserのバグか本当に証明書がおかしいのかもしれないなぁ...
そして,omega.contacts.msn.comに接続しに行って,証明書の期限をチェックしているところで,弾いてしまっている様です.以前のpidginだと動いていたのに...以前のバージョンでは有効期限をチェックしていなかったのかな...
追ってみると,/usr/pkgsrc/chat/libpurple/ がチェックしている様です.libpurple/work/pidgin-2.6.1/libpurple/certificate.c で有効期限をチェックしている様に見受けられました.セキュリティ上の問題もあるかもしれませんが,使えない方がもっと困ります.
ということで,以下の様にして有効期限のチェックを外してしまいました.ただし,有効期限のexpirationだけは見ています.
Index: distinfo
===================================================================
--- distinfo (revision 31)
+++ distinfo (working copy)
@@ -4,3 +4,4 @@
RMD160 (pidgin-2.6.1.tar.bz2) = f1682e2d37ca272bc10b0c7710e73fb4807749bf
Size (pidgin-2.6.1.tar.bz2) = 8964827 bytes
SHA1 (patch-aa) = 7a1ec6bc64226dff60eac4b4835fabf1daecb9b3
+SHA1 (patch-xa) = a9dc2da12ac05cee4b49725f575f3b38a0e2098f
Index: patches/patch-xa
===================================================================
--- patches/patch-xa (revision 0)
+++ patches/patch-xa (revision 0)
@@ -0,0 +1,49 @@
+*** libpurple/certificate.c.orig Tue Dec 8 05:48:23 2009
+--- libpurple/certificate.c Tue Dec 8 06:02:07 2009
+***************
+*** 36,41 ****
+--- 36,44 ----
+ #include "signals.h"
+ #include "util.h"
+
++ /* XXX: dirty hack for now... */
++ #define PURPLE_CERTIFICATE_IGNORE_ACTIVATION
++
+ /** List holding pointers to all registered certificate schemes */
+ static GList *cert_schemes = NULL;
+ /** List of registered Verifiers */
+***************
+*** 229,235 ****
+ uid = purple_certificate_get_unique_id(issuer);
+
+ ret = purple_certificate_get_times(issuer, &activation, &expiration);
+! if (!ret || now <activation || now > expiration) {
+ if (!ret)
+ purple_debug_error("certificate",
+ "...Failed to get validity times for certificate %s\n"
+--- 232,242 ----
+ uid = purple_certificate_get_unique_id(issuer);
+
+ ret = purple_certificate_get_times(issuer, &activation, &expiration);
+! #ifdef PURPLE_CERTIFICATE_IGNORE_ACTIVATION
+! if (!ret || now > expiration) {
+! #else /* PURPLE_CERTIFICATE_IGNORE_ACTIVATION */
+! if (!ret || now > expiration || now <activation) {
+ if (!ret)
+ purple_debug_error("certificate",
+ "...Failed to get validity times for certificate %s\n"
+***************
+*** 1632,1638 ****
+--- 1639,1649 ----
+ now = time(NULL);
+ ret = purple_certificate_get_times(vrq->cert_chain->data, &activation,
+ &expiration);
++ #ifdef PURPLE_CERTIFICATE_IGNORE_ACTIVATION
++ if (!ret || now > expiration) {
++ #else /* PURPLE_CERTIFICATE_IGNORE_ACTIVATION */
+ if (!ret || now > expiration || now <activation) {
+ gchar *secondary;
+
+ if (!ret)
そして,入れ替えです.make replaceに失敗したので,make updateを使いました.
% cd /usr/pkgsrc/chat/libpurple/
% make update
うーん...こんなんで良いんだろうか...
世の中では CRL とかもちゃんとチェックしているのだろうか,とも思うので,まぁ,とりあえずは良しとします.
最新の pidgin だったりすると,証明書が無効であれば,ユーザに確認するくらいはしてくれるのかもしれませんが,とりあえず.
そして,MSNに繋がらなくなりました...
「Invalid certificate chain」というメッセージが出てきて接続できません.
[ヘルプ]→[デバッグ・ウィンドウ]でデバッグ情報を確認すると,
certificate/x509/tls_cached: Certificate omega.contacts.msn.com is not yet valid, will be at Tue Jan 24 22:23:31 4868
こんなこと言われてます.4868年からactivateされるっていうのはどういうことなんでしょうか...parserのバグか本当に証明書がおかしいのかもしれないなぁ...
そして,omega.contacts.msn.comに接続しに行って,証明書の期限をチェックしているところで,弾いてしまっている様です.以前のpidginだと動いていたのに...以前のバージョンでは有効期限をチェックしていなかったのかな...
追ってみると,/usr/pkgsrc/chat/libpurple/ がチェックしている様です.libpurple/work/pidgin-2.6.1/libpurple/certificate.c で有効期限をチェックしている様に見受けられました.セキュリティ上の問題もあるかもしれませんが,使えない方がもっと困ります.
ということで,以下の様にして有効期限のチェックを外してしまいました.ただし,有効期限のexpirationだけは見ています.
Index: distinfo
===================================================================
--- distinfo (revision 31)
+++ distinfo (working copy)
@@ -4,3 +4,4 @@
RMD160 (pidgin-2.6.1.tar.bz2) = f1682e2d37ca272bc10b0c7710e73fb4807749bf
Size (pidgin-2.6.1.tar.bz2) = 8964827 bytes
SHA1 (patch-aa) = 7a1ec6bc64226dff60eac4b4835fabf1daecb9b3
+SHA1 (patch-xa) = a9dc2da12ac05cee4b49725f575f3b38a0e2098f
Index: patches/patch-xa
===================================================================
--- patches/patch-xa (revision 0)
+++ patches/patch-xa (revision 0)
@@ -0,0 +1,49 @@
+*** libpurple/certificate.c.orig Tue Dec 8 05:48:23 2009
+--- libpurple/certificate.c Tue Dec 8 06:02:07 2009
+***************
+*** 36,41 ****
+--- 36,44 ----
+ #include "signals.h"
+ #include "util.h"
+
++ /* XXX: dirty hack for now... */
++ #define PURPLE_CERTIFICATE_IGNORE_ACTIVATION
++
+ /** List holding pointers to all registered certificate schemes */
+ static GList *cert_schemes = NULL;
+ /** List of registered Verifiers */
+***************
+*** 229,235 ****
+ uid = purple_certificate_get_unique_id(issuer);
+
+ ret = purple_certificate_get_times(issuer, &activation, &expiration);
+! if (!ret || now <activation || now > expiration) {
+ if (!ret)
+ purple_debug_error("certificate",
+ "...Failed to get validity times for certificate %s\n"
+--- 232,242 ----
+ uid = purple_certificate_get_unique_id(issuer);
+
+ ret = purple_certificate_get_times(issuer, &activation, &expiration);
+! #ifdef PURPLE_CERTIFICATE_IGNORE_ACTIVATION
+! if (!ret || now > expiration) {
+! #else /* PURPLE_CERTIFICATE_IGNORE_ACTIVATION */
+! if (!ret || now > expiration || now <activation) {
+ if (!ret)
+ purple_debug_error("certificate",
+ "...Failed to get validity times for certificate %s\n"
+***************
+*** 1632,1638 ****
+--- 1639,1649 ----
+ now = time(NULL);
+ ret = purple_certificate_get_times(vrq->cert_chain->data, &activation,
+ &expiration);
++ #ifdef PURPLE_CERTIFICATE_IGNORE_ACTIVATION
++ if (!ret || now > expiration) {
++ #else /* PURPLE_CERTIFICATE_IGNORE_ACTIVATION */
+ if (!ret || now > expiration || now <activation) {
+ gchar *secondary;
+
+ if (!ret)
そして,入れ替えです.make replaceに失敗したので,make updateを使いました.
% cd /usr/pkgsrc/chat/libpurple/
% make update
うーん...こんなんで良いんだろうか...
世の中では CRL とかもちゃんとチェックしているのだろうか,とも思うので,まぁ,とりあえずは良しとします.
最新の pidgin だったりすると,証明書が無効であれば,ユーザに確認するくらいはしてくれるのかもしれませんが,とりあえず.
コメント (4) |
トラックバック (0) |










