Foi um erro muito estúpido e agora eu tenho vergonha de mim mesmo.
Acredito que os certificados do website sejam os mesmos que os da CA. Então agora eu criei novos arquivos ca.key e ca.crt e assinei o certificado do cliente com eles e voila. : (
ssl_certificate /etc/nginx/ssl/mydomain.com.crt;
ssl_certificate_key /etc/nginx/ssl/mydomain.com.key;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
Então todos os comandos em ordem:
Crie a chave e o certificado da CA:
- openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout nginx-selfsigned.key -out nginx-selfsigned.crt
Criar chave do cliente e CSR
- openssl genrsa -out client.key 2048
- openssl req -new -key client.key -out client.csr
Assinar o CSR do cliente com arquivos CA
- openssl x509 -req -days 3652 -sha256 -em client.csr -CA nginx-selfsigned.crt -CAkey nginx-selfsigned.key -set_serial 2 -out client.crt
OPCIONAL: converta client.crt em um pem codificado em base64 incluindo a chave privada
- openssl pkcs12 -export -clercts -em client.crt -inkey client.key -out client.p12
- openssl pkcs12 -no cliente.p12 -out client.pem -nodes
ENORME NOTA! O nome da organização dos arquivos CA e dos arquivos do cliente NÃO PODE SER IGUAL! Caso contrário, ele irá quebrar e falhar na autenticação.
Espero ter ajudado os outros que também são tão burros quanto eu.