2023/07/02
## 無法登入
今日登入電腦發現密碼一直錯誤,已確認沒有打錯
好險我電腦有其他Aministrators的帳號,
使用其他有權限的帳號登入,
進入後透過 電腦管理 > 本機使用者與群組 > 使用者
找到我的帳號並變更密碼

## 發現各種異常
雖然登入解決了,緊接著各種問題隨之而來
1. 無法登入公司Teams
1. Outlook無法開啟
1. 瀏覽器全部被登出
1. Google Drive 無法啟用
## 無法登入公司Teams
每次都會跳出要登入,
登入後出現您電腦的信賴平台模組無法運作,
錯誤碼: 80090016
伺服器訊息: 機碼組不存在

參考這篇
[登入不到電腦的microsoft軟件,錯誤碼為80090016 - Microsoft 社群](https://answers.microsoft.com/zh-hant/msoffice/forum/all/%E7%99%BB%E5%85%A5%E4%B8%8D%E5%88%B0%E9%9B%BB/8e813348-77f4-40f8-9c29-f4ac587b330e)
方法1: 清除 TPM => 我找不到文章說的“安全處理器疑難解答”
方法2: 更新 TPM 2.0 驅動程序並重啟 => 還是一樣
方法3: 刪光 認證管理員 內的所有認證 => 還是一樣
接著找到這篇
[更換系統主機板後發生 Microsoft Office Outlook Exchange 錯誤 80090016 | Dell 台灣](https://www.dell.com/support/kbdoc/zh-tw/000137758/%E6%9B%B4%E6%8F%9B-%E7%B3%BB%E7%B5%B1-%E4%B8%BB%E6%A9%9F%E6%9D%BF-%E5%BE%8C-microsoft-office-outlook-exchange-%E9%8C%AF%E8%AA%A4-80090016)
方法4 登出原有帳號,使用其他帳號登入,並將該帳號的指定資料夾重新命名
`C:\users\使用者\AppData\Local\Packages\Microsoft.AAD.BrokerPlugin_cw5n1h2txyewy`
回到原本的帳號發現
間隔一段時間後就可以登入了
## Outlook無法開啟
錯誤訊息忘了截圖
主要說無法載入 outlook 設定檔,需要先去 Exchange 報到
無法登入公司Teams的問題解決後這個也跟著正常了
## 瀏覽器全部被登出
這個還好,所有東西都在KeePassXC上面,
KeePassXC在Google Drive上,
所以只要Google Drive復活就可以了
## Google Drive 無法啟用
### 依官網教學處理
依照圖示(右下角那張)已重啟多次沒用,
Google官方文件建議移除重裝,
重裝了但還是沒用

### 發現可能問題-SSL/TLS Cipher Suite錯誤
查看Log
Log位置: `%USERPROFILE%\AppData\Local\Google\DriveFS`
檢視器: [Log 分析工具 2 (googleapps.com)](https://toolbox.googleapps.com/apps/loggershark/)

發現SSL/TLS錯誤,事件檢視器有? 那來搜尋看看

發現一大串 TLS 加密套件不支援導致的錯誤
幾種檢測SSL/TLS加密套件Cipher Suite的方法
1. openssl: 可以得知三方交握最後選擇的交密套件是什麼
`openssl s_client -showcerts -connect stackoverflow.com:443 | find "Cipher"`
2. nmap: 可以得知對方支援那些加密套件
`nmap -sV -p 443 -Pn --script ssl-cert,ssl-date,ssl-enum-ciphers stackoverflow.com`
使用curl看看,發現curl無法連線任何https !!!
```
C:\>curl -ILkv https://www.googleapis.com
* Trying 172.217.160.106:443...
* Connected to www.googleapis.com (172.217.160.106) port 443 (#0)
* schannel: disabled automatic use of client certificate
* ALPN: offers http/1.1
* schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.
* Closing connection 0
* schannel: shutting down SSL/TLS connection with www.googleapis.com port 443
curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.
```
使用nmap檢測對方支援的加密套件
使用IIS Crypto工具檢測自己的加密套件
發現我TLS v1.0~1.2的加密套件中對方至少有一個可以吃到,理論上足以應付大部分的狀況
不過對方TLSv1.3支援的加密套件我沒有一個支援!!

檢查一下登錄檔
GPO的 SSL/TLS 加密套件配置
`HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002`
```cipter=
TLS_AES_256_GCM_SHA384,
TLS_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA
```
本地的 SSL/TLS 加密套件配置
`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002`
```cipter=
TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
TLS_PSK_WITH_AES_256_GCM_SHA384
TLS_PSK_WITH_AES_128_GCM_SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256
TLS_PSK_WITH_NULL_SHA384
TLS_PSK_WITH_NULL_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384
```
發現兩個都有支援 `TLS_RSA_WITH_AES_256_CBC_SHA`,正常不應有curl無法連線https的問題
甚至本地的 SSL/TLS 加密套件配置還支援不安全的套件呢!
看一下實際對方使用哪一個加密套件
`openssl s_client -showcerts -connect www.googleapis.com:443`
```
C:\>openssl s_client -showcerts -connect www.googleapis.com:443
CONNECTED(000001FC)
depth=2 C = US, O = Google Trust Services LLC, CN = GTS Root R1
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=1 C = US, O = Google Trust Services LLC, CN = GTS CA 1C3
verify return:1
depth=0 CN = upload.video.google.com
verify return:1
---
...(略)...
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: ECDSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 4688 bytes and written 400 bytes
Verification error: unable to get local issuer certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 256 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 20 (unable to get local issuer certificate)
---
read:errno=0
```
看起來最後使用`TLSv1.3`的`TLS_AES_256_GCM_SHA384`,但對方不支援!!
鑒於對方Google `TLSv1.3`支援的很少,且對方支援的我都不知援
使用IIS Crypto直接停用`TLSv1.3`後重啟看看
重啟後就可以了!!!
