Support specifying a client certificate for mTLS auth #940
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Using a reverse-proxy with mTLS (client authentication) is a decent way to expose your self-hosted services on the internet.
This PR adds support for using a certificate that's installed in your Android device.
The changes are largely based on:
An optional client certificate can be selected when adding self-hosted accounts (FreshRSS, Google Reader and Fever APIs):
![](https://private-user-images.githubusercontent.com/1063155/400199297-106d6f86-240b-47e9-a828-48385245dae2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMTQwNzcsIm5iZiI6MTczOTMxMzc3NywicGF0aCI6Ii8xMDYzMTU1LzQwMDE5OTI5Ny0xMDZkNmY4Ni0yNDBiLTQ3ZTktYTgyOC00ODM4NTI0NWRhZTIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTFUMjI0MjU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ODAwMmQ2ODlhYTVjYTI2NWZjZjNlY2JlZTRiNTU5MjMwMjU4ZDM3ZTE0YmJlMDRjMjdkN2Y4MjgwNzEyOGRmMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.34r7DjaPg0ga5rCIfWTzyg8sNbAhNB21DdcpT1fgdNA)
![](https://private-user-images.githubusercontent.com/1063155/400199320-5a89e332-3f8a-4292-b8cb-65381f95a800.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMTQwNzcsIm5iZiI6MTczOTMxMzc3NywicGF0aCI6Ii8xMDYzMTU1LzQwMDE5OTMyMC01YTg5ZTMzMi0zZjhhLTQyOTItYjhjYi02NTM4MWY5NWE4MDAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTFUMjI0MjU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NmNkNWY3ODIzZGY0OTMxOGY5NmQwMmE0YWRjYWZlMjJhMDdiMTRjNTBkZjRiYTc4MjFhMzk0ZTAwMzQxNmEwNCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.m-xvHJ_qNu0b-bJ0IcvXyYgYD0KxrES01vt_mmBvILc)
It can later be changed/removed when viewing the account details:
![](https://private-user-images.githubusercontent.com/1063155/400199398-a259b6d4-690f-463c-89d2-a32cdc8a779e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMTQwNzcsIm5iZiI6MTczOTMxMzc3NywicGF0aCI6Ii8xMDYzMTU1LzQwMDE5OTM5OC1hMjU5YjZkNC02OTBmLTQ2M2MtODlkMi1hMzJjZGM4YTc3OWUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTFUMjI0MjU3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MjIyYTg4YTY4ZjA4NDhiY2I4OWQ5NzNjMDkwMDA0ZjU5ODhmMDBlN2IzMTk1N2U3YTMwZDk4NjdjN2M2NDQzYSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.OJqfX8bFJ6KIyW73QAvSgN9Zuz9D3_4JKdpjTAnsH2k)
I'm comfortable with the logic changes, but I have not much experience with Compose, so my code there can be sub-optimal.