Ubuntu18.04LTSでのeduroam接続

# はじめに
eduroamを使って在籍大学ではない大学でもwifi接続したいと思い、接続を試みました。ですが、大学やeduroamの接続手順はwindows, mac, android, iOSのものしかなく、公式のlinux用が存在しなかった（見つからなかった）ので、まとめようと思ったことがきっかけでこの記事を書きました。

# 目次
1. [前提条件](#前提条件)
1. [接続設定(GUI)](#接続設定gui)
1. [接続設定(CUI)](#接続設定cui)
1. [接続設定(証明書)](#接続設定証明書)
1. [参考文献](#参考文献)
1. [編集履歴](#編集履歴)

# 前提条件
<dl>
<dt>OS : </dt>
<dd>Linux</dd>
<dt>ディストリビューション : </dt>
<dd>Ubuntu18.04LTS</dd>
<dt>接続するときの状況 : </dt>
<dd>eduroamに参加している大学で、アカウントを持っている。</dd>
<dt>証明書での接続するときの状況 : </dt>
<dd>eduroamに参加している大学で、アカウントを発行していて証明書もダウンロードしている</dd>
<dd>その証明書のパスは<code>~/eduroam-1234.p12</code></dd>
</dl>

# 接続設定(GUI)
1. 通常のwifiと同様に、SSIDが「eduroam」のwifiを選び、以下のような設定画面を起動する。
![Screenshot from 2020-11-13 11-06-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516498/b3cb3bce-9c68-0aa8-c113-6b6271a47995.png)

2. その後、以下のように設定画面内の設定を指定する。

| 設定項目 | 設定値 |
|:-:|:-:|
| Wi-Fi security | WPA & WPA2 Enterprise |
| Authentication | 保護付きEAP(PEAP) |
| Anonymous identity | Usernameと同じ |
| Domain | 空のまま |
| CA証明書 | Security Communication RootCA2 を選択（詳細後述） |
| PEAP version | 自動 |
| Inner authentication | MSCHAPv2 |
| Username | 発行されたアカウント名 |
| Username | 発行されたパスワード |

## CA証明書の場所（Ubuntu18.04LTSにおいて）
CA証明書は`/usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt`に存在する。
これをCA証明書の欄で選択する。

## 設定例
私の所属する大学では、メールアドレスがアカウント名として用いられ、パスワードはマイページみたいなところで設定したものと同じものでした。
なので、以下のような設定になります。
※Username・パスワード・Anonymoud identityはでたらめですが、他は以下の通りでいいです。

![Screenshot from 2021-03-23 11-01-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516498/313c1b18-da01-9b3a-1f01-90012ca13203.png)


# 接続設定(CUI)
これは実際に手元で実行して確認したわけではありません。
個人的にはこういう設定系はGUIで設定したほうが変なことをしないで済みそうなので、GUIでの設定をオススメします。
どうしてもだめな場合、こちらを試してみてください。

1. wifiのデバイスのインターフェース名の調査

    ```
    $ ip a | grep w
    3: w...:...
    ```

    ※実際の表示は`w...:...`ではなく、`w`のあとに色々続きますが、なんとなくセキュリティ面から危険な気がするので、全部表示するのは控えます。（ただの勉強不足でしたら、すいません。）
ですが、たいていのwifiデバイスのifnameは wから始まるそうです。

    ここではifnameが`wtmp`だったとして、説明します。

1. eduroamの登録

    ```
    $ nmcli connection add type wifi ifname wtmp con-name eduroam ssid eduroam
    ```

1. 接続設定  
    `con`は`connection`の短縮です。`c`１文字でもOKです。

    ```
    $ nmcli con edit id eduroam
    nmcli> set ipv4.method auto
    nmcli> set 802-1x.eap peap
    nmcli> set 802-1x.anonymous-identity アカウント名
    nmcli> set 802-1x.phase2-auth mschapv2
    nmcli> set 802-1x.ca-cert /usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt 
    nmcli> set 802-1x.identity アカウント名
    nmcli> set 802-1x.password 発行されたパスワード
    nmcli> set wifi-sec.key-mgmt wpa-eap
    nmcli> save
    nmcli> activate
    nmcli> quit
    ```

1. 接続有効化

    ```
    $ nmcli connection up eduroam
    ```

# 接続設定(証明書)
[前提条件](#前提条件)にも記載の通り、ダウンロードしたeduroam用の証明書のパスは
<code>~/eduroam-1234.p12</code>だとして話を進めます。

## 接続設定方法
### 証明書のインストール(発行された証明書からユーザ証明書の作成)
まず、接続する前にダウロードした証明書からユーザ証明書を作成する必要があります。
初めから、p12拡張子の秘密鍵と拡張子crtのユーザ証明書がダウンロードできる場合は以下の操作は、必要ありません。

ユーザ証明書の作成方法は以下のコマンドを実行するだけです。（参考：[Linux の無線設定例](https://jimubu.adm.s.u-tokyo.ac.jp/public/index.php/Linux_%E3%81%AE%E7%84%A1%E7%B7%9A%E8%A8%AD%E5%AE%9A%E4%BE%8B)）

```
$ cd ~/
$ openssl pkcs12 -in eduroam-1234.p12 -clcerts -nokeys -out eduroam-1234-cl.crt
```

これで、ユーザ証明書<code>~/eduroam-1234-cl.crt</code>を得られました。

### 接続手順
発行された証明書のパスは、<code>~/eduroam-1234-cl.crt</code>、<code>~/eduroam-1234.p12</code>であるとして説明します。

0. 通常のwifiと同様に、SSIDが「eduroam」のwifiを選ぶ
![Screenshot from 2022-06-22 13-53-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516498/d638c295-8215-04b4-b67d-dcb4ea980e05.png)

1. クリックすると以下のような設定画面が起動する。
![Screenshot from 2022-06-22 13-52-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516498/96637121-f99f-334c-2da5-bd7a7eb995db.png)


2. 上記の設定画面の「認証(T)」という項目を「TLS」に変更して、以下のような画面にする。
![Screenshot from 2022-06-22 13-35-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516498/7b3b7c0b-9407-60f1-54fe-5891fa32bcc0.png)


2. その後、以下のように設定画面内の設定を指定する。

| 設定項目 | 設定値 |
|:-:|:-:|
| Wi-Fiセキュリティー(<ins>S</ins>) | WPA & WPA2 Enterprise |
| 認証(<ins>T</ins>) | TLS |
| ID(<ins>D</ins>) | 発行されたアカウント名（eduroam-ID） |
| ドメイン(<ins>D</ins>) | 空のまま |
| CA証明書(<ins>C</ins>) | Security Communication RootCA2 を選択<br>（[CA証明書の場所](#ca証明書の場所ubuntu2004ltsにおいて)を参照）</br> |
| CA証明書のパスワード(<ins>P</ins>) | 空のまま（入力できない） |
| User証明書(<ins>C</ins>) | ~/eduroam-1234-cl.crtを選択 |
| User証明書のパスワード(P) | 空のまま（入力できない） |
| User private key | ~/eduroam-1234.p12を選択 |
| User キーパスワード(P) | ~/eduroam-1234.p12のパスワード |

### CA証明書の場所(Ubuntu20.04LTSにおいて)
CA証明書は`/usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt`に存在する。
これをCA証明書の欄で選択する。

## 接続設定例
私の所属する大学では、eduroam-IDと証明書のアカウントをそれぞれ発行し、パスワードもその時に発行されていました。
なので、以下のような設定になります。
※ID・パスワード・証明書のファイル名はでたらめですが、他は以下の通りでいいです。

![Screenshot from 2022-06-22 14-50-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516498/91ac18a0-0177-aaf3-cfaa-30cc91308f2e.png)


# 参考文献
- [Linux (Ubuntu 18.04) からUTokyo WiFiに接続する (GUI編+CLI編)](https://progrunner.hatenablog.jp/entry/2019/11/13/145603)
- [Linux の無線設定例](https://jimubu.adm.s.u-tokyo.ac.jp/public/index.php/Linux_%E3%81%AE%E7%84%A1%E7%B7%9A%E8%A8%AD%E5%AE%9A%E4%BE%8B)

# 編集履歴
- 2021/3/23 新規作成
- 2022/6/22 「接続設定(証明書)」関連の説明を追記