2020年8月アーカイブ

 

 

古いandroid端末へ、Let's Encryptの新しいルート証明書「ISRG Root X1」を手動でインストールする手順のお話です。
これは、Googleさんとしてはしてほしくないことなのではないかと想像します。(「古い端末はセキュリティ的に危険だから、新しいandroid端末を買って使ってよ!」の意味)

・android 5以上が前提です。4以下はTLS 1.2に対応していないので諦めましょう。
・あらかじめ「ダウンロード」フォルダに「ISRG Root X1」証明書をダウンロードしておきましょう。
 https://letsencrypt.org/certs/isrgrootx1.pem.txt


androidのバージョンによって機能の表示名が違っているかもしれません。
以下はXperia SGP311のandroid 5.1.1(日本では非公式)のスクショです。

1.設定→セキュリティから「機器メモリーかSDカードからインストール」をタップ。

letsencrypt_root_certificate_change02.png

letsencrypt_root_certificate_change03.png

2.ファイル選択画面が表示されるので、あらかじめダウンロードしておいた「ISRG Root X1」証明書をタップ。

letsencrypt_root_certificate_change04.png

3.「証明署名」に半角で任意の証明書名を入力後、OKをタップ。

letsencrypt_root_certificate_change05.png

以上で証明書のインストールは完了です。

https://valid-isrgrootx1.letsencrypt.org/
へアクセスし、エラーなくページが表示されることを確認します。

letsencrypt_root_certificate_change06.png

ルート証明書は↓な感じです。

letsencrypt_root_certificate_change07.png

注意点が1つ。
OSが管理している証明書ではないので、時々、「ネットワーク監視」の警告メッセージが表示されます。これが、自分が入れた証明書に関するものであれば気にしないでよいです。

letsencrypt_root_certificate_change08.png

ぐっどらっこ。

2020年12月23日追記
朗報です。「DST Root X3」のルート証明書でも、クロス署名(ISRG Root X1 または ISRG Root X2)の利用で、3年間延長して利用できることが決まりました。期限は2024年9月30日となり、来年1月のルート証明書の変更はキャンセルとなります。
https://letsencrypt.org/2020/12/21/extending-android-compatibility.html
上記によれば、デバイス中の自己証明書の有効期限は切れたままで更新もできないが、Androidでは証明書の検証に必要な「トラストアンカー」を使用しない仕様になっているので、有効期限を超えた自己証明書でも、有効期限が延長されたクロス署名(今回はISRG Root X1 または ISRG Root X2)が効くらしい。(2024年9月30日までは、Android 2.3.6以降ならOK)。今回のようなことを想定してのAndroid側の実装だったのかも。

--- 本文はここから ---

Let's Encryptが提供する無料のSSL証明書は本サイトでも利用しています。
そして、Let's Encryptは、Let's Encryptの独自のルート証明 ISRG Root X1へ2020年9月29日(1月に延期)に変更することを以前から表明しています。

本サイトのサーバー、さくらインターネットでは、2021年6月頃までは、これまでの「DST Root X3」のルート証明書を利用できる中間CA証明書を利用する設定を維持するとのことですので、2021年6月頃まではクライアントには何も影響はありません。

なぜ2021年6月頃かというと、「DST Root X3」のルート証明書の期限が2021年9月30日だからです。
いくら中間CA証明書で「DST Root X3」を利用できるようにしてあっても、「DST Root X3」の期限が切れてしまっては意味がありません。

というわけで、2021年9月30日以降は、「DST Root X3」ルート証明書+中間CA証明書でも、証明書としては機能しなくなってしまうわけです。

で、上記の話がどんな問題をもたらすかというと、

android 7.1.1(7.1.1はOK)より古いandroid OSにはISRGルート証明書が入っていないので、
この新しいルート証明書を使っているサーバーへアクセスすると、例えばChromeブラウザでは、
 NET::ERR_CERT_AUTHORITY_INVALID
というエラー画面が最初に表示されてしまう。

という現象が発生していまいます。

letsencrypt_root_certificate_change01.png

現在でも、
 https://valid-isrgrootx1.letsencrypt.org/
へアクセスすることで、新しい「ISRGルート証明書」を使ったサイトへのアクセスの確認ができます。

参考:androidのリリース一覧。
 https://developer.android.com/about/dashboards

解決方法は2つです。いずれもクライアント側の対応です。

1.新しいISRGルート証明書を手動でインストールする。
 https://letsencrypt.org/certificates/ の「ISRG Root X1 (self-signed)」からダウンロードして、手動でインストールする。
 android端末への証明書の手動のインストール方法はこちら

2.ブラウザにFirefoxを利用する。
 Firefoxでは、OSの管理する証明書は使わず、独自のルート証明書群(ルートストア)を使うので、そこに「「ISRG Root X1」は入っているので問題なし。(以下はバージョン68で実験。ISRGのルート証明がOS管理下になくてもエラーなく表示)

letsencrypt_root_certificate_change09.png

ここでは、古いandroid OSのセキュリティ云々には触れないでおきます。
あくまでも自己責任で。

ぐっどらっこ。

私は、Outlookからメールを送るときはテキスト形式で送っています。
最近になって、ウェブ会議をしようとURLを送った時、それを受け取った相手がウェブ会議にうまく参加できないケースが何度か発生して、なんでだろう?と思って調べていたら、Outlookで送信するメールの本文が132文字で必ず改行が入ってしまっていて、これが原因で正しいURLにアクセスできていないことが原因でした。

じゃあ132より大きい値に設定すればいいじゃん!ということなのですが、Outlookのオプション設定の画面では132より大きい値を指定することができません。Outlook 2016、2019、365、みーーんなできません。

レジストリを変更すればOKということなので、やってみました。

レジストリエディタを起動し、
コンピューター\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Common\MailSettings
というキーに
 PlainWrapLen
という値がありますので、このデータを変更します。
今回は、10進の1024 にしました。

outlook_text_max_length1.png

レジストリエディタ終了後に確認したOutlookのオプション画面は以下のような感じです。

outlook_text_max_length2.png

この値を大きくしたことで、何か他の問題が起きないかドキドキな今日このごろです。

ぐっどらっこ。