MikroTik hAP acで作るHotspot 2.0環境 (Android編)
■前説
hAP ac側の環境については前回参照。
MikroTik hAP acで作るHotspot 2.0環境 (iOS編) - pirosapの備忘録
■Android 7.1.1/Android O Developer Previewで接続確認できたプロファイル
※現状、Android 7.0を搭載した端末では、一部(Samsung Galaxy系のもの)を除き接続確認ができていない
Qua tab px → プロファイルはインストール可能であるが、Wi-Fiの詳細設定よりPasspointを有効にしても接続されない)
honor8 → プロファイルインストール時にエラー
検証環境
FreeRADIUSに登録したユーザ名: hoge@pirosap.tech
FreeRADIUSに登録したパスワード: hs20!test17
FreeRADIUSサーバは、Let's Encryptで取得したサーバ証明書を使用している
サンプルプロファイル
プロファイルファイル名:pirosap-tech.config
<a href="pirosap-tech.config">pirosap-tech.config</a>
な感じでWEBサーバ上に置いて、ブラウザでリンクを踏んでインストールした
WEBサーバ側には下記のような設定が必要
(Apacheの場合) AddType application/x-wifi-config .config
プロファイルの構成
実際のプロファイルは下記のようになっている。
これは、後述する(A)をBase64でエンコードしたものである。
<実際のプロファイル>
Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PXtib3VuZGFyeX0KQ29udGVu dC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CgotLXtib3VuZGFyeX0KQ29udGVudC1UeXBlOiBh cHBsaWNhdGlvbi94LXBhc3Nwb2ludC1wcm9maWxlCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IGJhc2U2NAoKUEUxbmJYUlVjbVZsSUhodGJHNXpQU0p6ZVc1amJXdzZaRzFrWkdZeExqSWlQZ29n SUR4V1pYSkVWRVErTVM0eVBDOVdaWEpFVkVRKwpDaUFnUEU1dlpHVStDaUFnSUNBOFRtOWtaVTVo YldVK1VHVnlVSEp2ZG1sa1pYSlRkV0p6WTNKcGNIUnBiMjQ4TDA1dlpHVk9ZVzFsClBnb2dJQ0Fn UEZKVVVISnZjR1Z5ZEdsbGN6NEtJQ0FnSUNBZ1BGUjVjR1UrQ2lBZ0lDQWdJQ0FnUEVSRVJrNWhi V1UrZFhKdU9uZG0KWVRwdGJ6cG9iM1J6Y0c5ME1tUnZkREF0Y0dWeWNISnZkbWxrWlhKemRXSnpZ M0pwY0hScGIyNDZNUzR3UEM5RVJFWk9ZVzFsUGdvZwpJQ0FnSUNBOEwxUjVjR1UrQ2lBZ0lDQThM MUpVVUhKdmNHVnlkR2xsY3o0S0lDQWdJRHhPYjJSbFBnb2dJQ0FnSUNBOFRtOWtaVTVoCmJXVStX REU4TDA1dlpHVk9ZVzFsUGdvZ0lDQWdJQ0E4VG05a1pUNEtJQ0FnSUNBZ0lDQThUbTlrWlU1aGJX VStRM0psWkdWdWRHbGgKYkR3dlRtOWtaVTVoYldVK0NpQWdJQ0FnSUNBZ1BFNXZaR1UrQ2lBZ0lD QWdJQ0FnSUNBOFRtOWtaVTVoYldVK1EzSmxZWFJwYjI1RQpZWFJsUEM5T2IyUmxUbUZ0WlQ0S0lD QWdJQ0FnSUNBZ0lEeFdZV3gxWlQ0eU1ERTNMVEF5TFRFMlZERTBPakl4T2pNMldqd3ZWbUZzCmRX VStDaUFnSUNBZ0lDQWdQQzlPYjJSbFBnb2dJQ0FnSUNBZ0lEeE9iMlJsUGdvZ0lDQWdJQ0FnSUNB Z1BFNXZaR1ZPWVcxbFBsVnoKWlhKdVlXMWxVR0Z6YzNkdmNtUThMMDV2WkdWT1lXMWxQZ29nSUNB Z0lDQWdJQ0FnUEU1dlpHVStDaUFnSUNBZ0lDQWdJQ0FnSUR4TwpiMlJsVG1GdFpUNU5ZV05vYVc1 bFRXRnVZV2RsWkR3dlRtOWtaVTVoYldVK0NpQWdJQ0FnSUNBZ0lDQWdJRHhXWVd4MVpUNTBjblZs ClBDOVdZV3gxWlQ0S0lDQWdJQ0FnSUNBZ0lEd3ZUbTlrWlQ0S0lDQWdJQ0FnSUNBZ0lEeE9iMlJs UGdvZ0lDQWdJQ0FnSUNBZ0lDQTgKVG05a1pVNWhiV1UrUlVGUVRXVjBhRzlrUEM5T2IyUmxUbUZ0 WlQ0S0lDQWdJQ0FnSUNBZ0lDQWdQRTV2WkdVK0NpQWdJQ0FnSUNBZwpJQ0FnSUNBZ1BFNXZaR1ZP WVcxbFBrVkJVRlI1Y0dVOEwwNXZaR1ZPWVcxbFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUR4V1lXeDFa VDR5Ck1Ud3ZWbUZzZFdVK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2VG05a1pUNEtJQ0FnSUNBZ0lDQWdJ Q0FnUEU1dlpHVStDaUFnSUNBZ0lDQWcKSUNBZ0lDQWdQRTV2WkdWT1lXMWxQa2x1Ym1WeVRXVjBh RzlrUEM5T2IyUmxUbUZ0WlQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Vm1GcwpkV1UrVFZNdFEwaEJV QzFXTWp3dlZtRnNkV1UrQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZUbTlrWlQ0S0lDQWdJQ0FnSUNBZ0lE d3ZUbTlrClpUNEtJQ0FnSUNBZ0lDQWdJRHhPYjJSbFBnb2dJQ0FnSUNBZ0lDQWdJQ0E4VG05a1pV NWhiV1UrVlhObGNtNWhiV1U4TDA1dlpHVk8KWVcxbFBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Vm1Gc2RX VSthRzluWlR3dlZtRnNkV1UrQ2lBZ0lDQWdJQ0FnSUNBOEwwNXZaR1UrQ2lBZwpJQ0FnSUNBZ0lD QThUbTlrWlQ0S0lDQWdJQ0FnSUNBZ0lDQWdQRTV2WkdWT1lXMWxQbEJoYzNOM2IzSmtQQzlPYjJS bFRtRnRaVDRLCklDQWdJQ0FnSUNBZ0lDQWdQRlpoYkhWbFBtRklUWGxOUTBZd1dsaE9NRTFVWXow OEwxWmhiSFZsUGdvZ0lDQWdJQ0FnSUNBZ1BDOU8KYjJSbFBnb2dJQ0FnSUNBZ0lEd3ZUbTlrWlQ0 S0lDQWdJQ0FnSUNBOFRtOWtaVDRLSUNBZ0lDQWdJQ0FnSUR4T2IyUmxUbUZ0WlQ1UwpaV0ZzYlR3 dlRtOWtaVTVoYldVK0NpQWdJQ0FnSUNBZ0lDQThWbUZzZFdVK2NHbHliM05oY0M1MFpXTm9QQzlX WVd4MVpUNEtJQ0FnCklDQWdJQ0E4TDA1dlpHVStDaUFnSUNBZ0lEd3ZUbTlrWlQ0S0lDQWdJQ0Fn UEU1dlpHVStDaUFnSUNBZ0lDQWdQRTV2WkdWT1lXMWwKUGtodmJXVlRVRHd2VG05a1pVNWhiV1Ur Q2lBZ0lDQWdJQ0FnUEU1dlpHVStDaUFnSUNBZ0lDQWdJQ0E4VG05a1pVNWhiV1UrUm5KcApaVzVr YkhsT1lXMWxQQzlPYjJSbFRtRnRaVDRLSUNBZ0lDQWdJQ0FnSUR4V1lXeDFaVDVPUjBnZ2RHVnpk R0psWkNCaWVTQndhWEp2CmMyRndMblJsWTJnOEwxWmhiSFZsUGdvZ0lDQWdJQ0FnSUR3dlRtOWta VDRLSUNBZ0lDQWdJQ0E4VG05a1pUNEtJQ0FnSUNBZ0lDQWcKSUR4T2IyUmxUbUZ0WlQ1R1VVUk9Q QzlPYjJSbFRtRnRaVDRLSUNBZ0lDQWdJQ0FnSUR4V1lXeDFaVDV1WjJndWNHbHliM05oY0M1MApa V05vUEM5V1lXeDFaVDRLSUNBZ0lDQWdJQ0E4TDA1dlpHVStDaUFnSUNBZ0lEd3ZUbTlrWlQ0S0lD QWdJRHd2VG05a1pUNEtJQ0E4CkwwNXZaR1UrQ2p3dlRXZHRkRlJ5WldVK0NnPT0KLS17Ym91bmRh cnl9CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnQKQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogYmFzZTY0CgpNSUlEU2pDQ0FqS2dBd0lCQWdJUVJLK3dnTmFqSjdxSk1E bUdMdmhBYXpBTkJna3Foa2lHOXcwQkFRVUZBREEvCk1TUXdJZ1lEVlFRS0V4dEVhV2RwZEdGc0lG TnBaMjVoZEhWeVpTQlVjblZ6ZENCRGJ5NHhGekFWQmdOVkJBTVQKRGtSVFZDQlNiMjkwSUVOQklG Z3pNQjRYRFRBd01Ea3pNREl4TVRJeE9Wb1hEVEl4TURrek1ERTBNREV4TlZvdwpQekVrTUNJR0Ex VUVDaE1iUkdsbmFYUmhiQ0JUYVdkdVlYUjFjbVVnVkhKMWMzUWdRMjh1TVJjd0ZRWURWUVFECkV3 NUVVMVFnVW05dmRDQkRRU0JZTXpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFv Q2dnRUIKQU4rdjZaZFFDSU5YdE14aVpmYVFndXpIMHl4ck1NcGI3Tm5EZmNkQXdSZ1VpK0RvTTNa Skt1TS9JVW1UckU0TwpyejVJeTJYdS9OTWhEMlhTS3RreWo0emw5M2V3RW51MWxjQ0pvNm02N1hN dWVnd0dNb09pZm9vVU1NMFJvT0VxCk9MbDVDakg5VUwyQVpkKzNVV09EeU9LSVllcExZWUhzVW11 NW91SkxHaWlmU0tPZUROb0pqajRYTGg3ZElOOWIKeGlxS3F5NjljSzNGQ3hvbGtIUnl4WHRxcXpU V01Jbi81V2dUZTFRTHlOYXU3RnFja2g0OVpMT014dCsveVVGdwo3Qlp5MVNic09GVTVROUQ4L1Jo Y1FQR1g2OVdhbTQwZHV0b2x1Y2JZMzhFVkFqcXIybTd4UGk3MVhBaWNQTmFECmFlUVFteGtxdGls WDQrVTltNS93QWwwQ0F3RUFBYU5DTUVBd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlYKSFE4 QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZNU25zYVI3TEhINjIrRkxrSFgveEJWZ2hZa1FNQTBH Q1NxRwpTSWIzRFFFQkJRVUFBNElCQVFDakdpeWJGd0JjcVI3dUtHWTNPcitEeHo5THd3bWdsU0Jk NDlsWlJOSStEVDY5CmlrdWdkQi9PRUlLY2RCb2RmcGdhM2NzVFM3TWdST1NSNmN6OGZhWGJhdVgr NXYzZ1R0MjNBRHExY0Vtdjh1WHIKQXZIUkFvc1p5NVE2WGtqRUdCNVlHVjhlQWxyd0RQR3hyYW5j V1lhTGJ1bVI5WWJLK3JsbU02cFpXODdpcHhaegpSOHNyekptd04walA0MVpMOWM4UERISXloOGJ3 Ukx0VGNtMUQ5U1pJbWxKbnQxaXIvbWQyY1hqYkRhSldGQk01CkpER0ZvcWdDV2pCSDRkMVFCN3dD Q1pBQTYyUmpZSnNXdklqSkV1YlNmWkdMK1QweWpXVzA2WHl4VjNicXhiWW8KT2I4VlpSekk5bmVX YWdxTmR3dllrUXNFamdmYktiWUs3cDJDTlRVUQpNSUlFa2pDQ0EzcWdBd0lCQWdJUUNnRkJRZ0FB QVZPRmMyb0xoZXluQ0RBTkJna3Foa2lHOXcwQkFRc0ZBREEvCk1TUXdJZ1lEVlFRS0V4dEVhV2Rw ZEdGc0lGTnBaMjVoZEhWeVpTQlVjblZ6ZENCRGJ5NHhGekFWQmdOVkJBTVQKRGtSVFZDQlNiMjkw SUVOQklGZ3pNQjRYRFRFMk1ETXhOekUyTkRBME5sb1hEVEl4TURNeE56RTJOREEwTmxvdwpTakVM TUFrR0ExVUVCaE1DVlZNeEZqQVVCZ05WQkFvVERVeGxkQ2R6SUVWdVkzSjVjSFF4SXpBaEJnTlZC QU1UCkdreGxkQ2R6SUVWdVkzSjVjSFFnUVhWMGFHOXlhWFI1SUZnek1JSUJJakFOQmdrcWhraUc5 dzBCQVFFRkFBT0MKQVE4QU1JSUJDZ0tDQVFFQW5OTU04RnJsTGtlM2NsMDNnN05vWXpEcTF6VW1H U1hodmI0MThYQ1NMN2U0UzBFRgpxNm1lTlFoWTdMRXF4R2lIQzZQamRlVG04NmRpY2JwNWdXQWYx NUdhbi9QUWVHZHh5R2tPbFpIUC91YVo2V0E4ClNNeCt5azEzRWlTZFJ4dGE2N25zSGpjQUhKeXNl NmNGNnM1SzY3MUI1VGFZdWN2OWJUeVdhTjhqS2tLUURJWjAKWjhoL3BacTRVbUVVRXo5bDZZS0h5 OXY2RGxiMmhvbnpoVCtYaHErdzNCcnZhdzJWRm4zRUs2QmxzcGtFTm5XQQphNnhLOHh1UVNYZ3Zv cFpQS2lBbEtRVEdkTURRTWMyUE1UaVZGcnFvTTdoRDhiRWZ3ekIvb25reEV6MHROdmpqCi9QSXph cms1TWNXdnhJME5IV1FXTTZyNmhDbTIxQXZBMkgzRGt3SURBUUFCbzRJQmZUQ0NBWGt3RWdZRFZS MFQKQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd2Z3WUlLd1lCQlFVSEFR RUVjekJ4TURJRwpDQ3NHQVFVRkJ6QUJoaVpvZEhSd09pOHZhWE55Wnk1MGNuVnpkR2xrTG05amMz QXVhV1JsYm5SeWRYTjBMbU52CmJUQTdCZ2dyQmdFRkJRY3dBb1l2YUhSMGNEb3ZMMkZ3Y0hNdWFX UmxiblJ5ZFhOMExtTnZiUzl5YjI5MGN5OWsKYzNSeWIyOTBZMkY0TXk1d04yTXdId1lEVlIwakJC Z3dGb0FVeEtleHBIc3NjZnJiNFV1UWRmL0VGV0NGaVJBdwpWQVlEVlIwZ0JFMHdTekFJQmdabmdR d0JBZ0V3UHdZTEt3WUJCQUdDM3hNQkFRRXdNREF1QmdnckJnRUZCUWNDCkFSWWlhSFIwY0Rvdkwy TndjeTV5YjI5MExYZ3hMbXhsZEhObGJtTnllWEIwTG05eVp6QThCZ05WSFI4RU5UQXoKTURHZ0w2 QXRoaXRvZEhSd09pOHZZM0pzTG1sa1pXNTBjblZ6ZEM1amIyMHZSRk5VVWs5UFZFTkJXRE5EVWt3 dQpZM0pzTUIwR0ExVWREZ1FXQkJTb1NtcGpCSDNkdXViUk9iZW1SV1h2ODZqc29UQU5CZ2txaGtp Rzl3MEJBUXNGCkFBT0NBUUVBM1RQWEVmTmpXRGpkR0JYN0NWVytkbGE1Y0VpbGFVY25lOElrQ0pM eFdoOUtFaWszSkhSUkhHSm8KdU0yVmNHZmw5NlM4VGloUnpadm9yb2VkNnRpNldxRUJtdHp3M1dv ZGF0ZytWeU9lcGg0RVlwci8xd1hLdHg4Lwp3QXBJdkpTd3RtVmk0TUZVNWFNcXJTREU2ZWE3M01q MnRjTXlvNWpNZDZqbWVXVUhLOHNvL2pvV1VvSE9VZ3d1Clg0UG8xUVl6KzNkc3prRHFNcDRma2x4 QndYUnNXMTBLWHpQTVRaK3NPUEF2ZXl4aW5kbWprVzhsR3krUXNSbEcKUGZaK0c2WjZoN21qZW0w WStpV2xrWWNWNFBJV0wxaXdCaThzYUNiR1M1ak4ycDhNK1grUTdVTktFa1JPYjNONgpLT3FrcW01 N1RIMkgzZURKQWtTbmg2L0RORnUwUWc9PQotLXtib3VuZGFyeX0tLQoK
上記の元となるXML (A)は、次のような構成になっている。
<XML (A)>
Content-Type: multipart/mixed; boundary={boundary} Content-Transfer-Encoding: base64 --{boundary} Content-Type: application/x-passpoint-profile Content-Transfer-Encoding: base64 (下記B) --{boundary} Content-Type: application/x-x509-ca-cert Content-Transfer-Encoding: base64 (下記C) (下記D) --{boundary}--
上記(A)に埋まっている(B)部分のHotspot2.0関連の情報は、次のXMLファイルをBase64でエンコードしたものである。
<ネタ元のXML ― (B')>
<MgmtTree xmlns="syncml:dmddf1.2"> <VerDTD>1.2</VerDTD> <Node> <NodeName>PerProviderSubscription</NodeName> <RTProperties> <Type> <DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName> </Type> </RTProperties> <Node> <NodeName>X1</NodeName> <Node> <NodeName>Credential</NodeName> <Node> <NodeName>CreationDate</NodeName> <Value>2017-02-16T14:21:36Z</Value> </Node> <Node> <NodeName>UsernamePassword</NodeName> <Node> <NodeName>MachineManaged</NodeName> <Value>true</Value> </Node> <Node> <NodeName>EAPMethod</NodeName> <Node> <NodeName>EAPType</NodeName> <Value>21</Value> </Node> <Node> <NodeName>InnerMethod</NodeName> <Value>MS-CHAP-V2</Value> </Node> </Node> <Node> <NodeName>Username</NodeName> <Value>ユーザ名平文レルムなし(hoge)</Value> </Node> <Node> <NodeName>Password</NodeName> <Value>パスワード hs20!test17 をBase64でエンコードした文字列(aHMyMCF0ZXN0MTc=)</Value> </Node> </Node> <Node> <NodeName>Realm</NodeName> <Value>pirosap.tech</Value> </Node> </Node> <Node> <NodeName>HomeSP</NodeName> <Node> <NodeName>FriendlyName</NodeName> <Value>NGH testbed by pirosap.tech</Value> </Node> <Node> <NodeName>FQDN</NodeName> <Value>ngh.pirosap.tech</Value> </Node> </Node> </Node> </Node> </MgmtTree>
上記(B')をBase64でエンコードしたものが(B)となる。
<(B)>
PE1nbXRUcmVlIHhtbG5zPSJzeW5jbWw6ZG1kZGYxLjIiPgogIDxWZXJEVEQ+MS4yPC9WZXJEVEQ+ CiAgPE5vZGU+CiAgICA8Tm9kZU5hbWU+UGVyUHJvdmlkZXJTdWJzY3JpcHRpb248L05vZGVOYW1l PgogICAgPFJUUHJvcGVydGllcz4KICAgICAgPFR5cGU+CiAgICAgICAgPERERk5hbWU+dXJuOndm YTptbzpob3RzcG90MmRvdDAtcGVycHJvdmlkZXJzdWJzY3JpcHRpb246MS4wPC9EREZOYW1lPgog ICAgICA8L1R5cGU+CiAgICA8L1JUUHJvcGVydGllcz4KICAgIDxOb2RlPgogICAgICA8Tm9kZU5h bWU+WDE8L05vZGVOYW1lPgogICAgICA8Tm9kZT4KICAgICAgICA8Tm9kZU5hbWU+Q3JlZGVudGlh bDwvTm9kZU5hbWU+CiAgICAgICAgPE5vZGU+CiAgICAgICAgICA8Tm9kZU5hbWU+Q3JlYXRpb25E YXRlPC9Ob2RlTmFtZT4KICAgICAgICAgIDxWYWx1ZT4yMDE3LTAyLTE2VDE0OjIxOjM2WjwvVmFs dWU+CiAgICAgICAgPC9Ob2RlPgogICAgICAgIDxOb2RlPgogICAgICAgICAgPE5vZGVOYW1lPlVz ZXJuYW1lUGFzc3dvcmQ8L05vZGVOYW1lPgogICAgICAgICAgPE5vZGU+CiAgICAgICAgICAgIDxO b2RlTmFtZT5NYWNoaW5lTWFuYWdlZDwvTm9kZU5hbWU+CiAgICAgICAgICAgIDxWYWx1ZT50cnVl PC9WYWx1ZT4KICAgICAgICAgIDwvTm9kZT4KICAgICAgICAgIDxOb2RlPgogICAgICAgICAgICA8 Tm9kZU5hbWU+RUFQTWV0aG9kPC9Ob2RlTmFtZT4KICAgICAgICAgICAgPE5vZGU+CiAgICAgICAg ICAgICAgPE5vZGVOYW1lPkVBUFR5cGU8L05vZGVOYW1lPgogICAgICAgICAgICAgIDxWYWx1ZT4y MTwvVmFsdWU+CiAgICAgICAgICAgIDwvTm9kZT4KICAgICAgICAgICAgPE5vZGU+CiAgICAgICAg ICAgICAgPE5vZGVOYW1lPklubmVyTWV0aG9kPC9Ob2RlTmFtZT4KICAgICAgICAgICAgICA8VmFs dWU+TVMtQ0hBUC1WMjwvVmFsdWU+CiAgICAgICAgICAgIDwvTm9kZT4KICAgICAgICAgIDwvTm9k ZT4KICAgICAgICAgIDxOb2RlPgogICAgICAgICAgICA8Tm9kZU5hbWU+VXNlcm5hbWU8L05vZGVO YW1lPgogICAgICAgICAgICA8VmFsdWU+aG9nZTwvVmFsdWU+CiAgICAgICAgICA8L05vZGU+CiAg ICAgICAgICA8Tm9kZT4KICAgICAgICAgICAgPE5vZGVOYW1lPlBhc3N3b3JkPC9Ob2RlTmFtZT4K ICAgICAgICAgICAgPFZhbHVlPmFITXlNQ0YwWlhOME1UYz08L1ZhbHVlPgogICAgICAgICAgPC9O b2RlPgogICAgICAgIDwvTm9kZT4KICAgICAgICA8Tm9kZT4KICAgICAgICAgIDxOb2RlTmFtZT5S ZWFsbTwvTm9kZU5hbWU+CiAgICAgICAgICA8VmFsdWU+cGlyb3NhcC50ZWNoPC9WYWx1ZT4KICAg ICAgICA8L05vZGU+CiAgICAgIDwvTm9kZT4KICAgICAgPE5vZGU+CiAgICAgICAgPE5vZGVOYW1l PkhvbWVTUDwvTm9kZU5hbWU+CiAgICAgICAgPE5vZGU+CiAgICAgICAgICA8Tm9kZU5hbWU+RnJp ZW5kbHlOYW1lPC9Ob2RlTmFtZT4KICAgICAgICAgIDxWYWx1ZT5OR0ggdGVzdGJlZCBieSBwaXJv c2FwLnRlY2g8L1ZhbHVlPgogICAgICAgIDwvTm9kZT4KICAgICAgICA8Tm9kZT4KICAgICAgICAg IDxOb2RlTmFtZT5GUUROPC9Ob2RlTmFtZT4KICAgICAgICAgIDxWYWx1ZT5uZ2gucGlyb3NhcC50 ZWNoPC9WYWx1ZT4KICAgICAgICA8L05vZGU+CiAgICAgIDwvTm9kZT4KICAgIDwvTm9kZT4KICA8 L05vZGU+CjwvTWdtdFRyZWU+Cg==
<(C) FreeRADIUSサーバのサーバ証明書を署名しているLet's Encrypt の中間証明書をクロス署名しているIdenTrust のルート証明書>
※―–BEGIN CERTIFICATE―– とか ―–END CERTIFICATE―– とかいらない
DST Root CA X3
※ISRG Root X1は広く信頼されていないため、多くのブラウザで信頼されているIdenTrustのDST Root CA X3でクロス署名されている
Let's Encryptによる説明:https://letsencrypt.org/certificates/
<(D) FreeRADIUSサーバのサーバ証明書を署名しているLets's Encryptの中間証明書>
※―–BEGIN CERTIFICATE―– とか ―–END CERTIFICATE―– とかいらない
Let's Encrypt Authority X3 (IdenTrust cross-signed)