pfSense mitm SSL proxy та firefox з Android

Після налаштування SSL Man In the Middle Filtering на pfSense для нормальної роботи треба встановити ca сертифікат на усіх пристроях.

Якщо просто завантжити сертифікат на Android за допомогою firefox, firefox завантажить сертифікат та ви зможете встановити його до системи, але firefox цей сертифікат його використовувати не буде. Щоб firefox розпізнав сертифікат як CA сертифікат треба щоб сервер віддав його як “application/x-x509-ca-cert” content-type.

Зробити це можна багатьма шляхами, я зробив це за допомогою сервера на Java:

package maxx.ca.rest;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CertPage {
    @GetMapping(value = "/android", produces = "application/x-x509-ca-cert")
    public @ResponseBody
    byte[] getImageWithMediaType() throws IOException {
        InputStream in = getClass().getResourceAsStream("/ssl+ca.crt");
        return IOUtils.toByteArray(in);
    }
}

Відкриваємо firefox на Android та вводимо http://host:8080/android у строку адреси, встановлюємо сертифікат.