But I'm trying to have users download user certificates for non-domain computers from http:///certsrv.
Com o registro na Web do ADCS, com computadores que não fazem parte do domínio, você precisa criar o pedido de certificado manualmente, com certreq.exe (incluído no Windows) ou OpenSSL.
Quando você cria a solicitação de certificado com certreq.exe , a chave privada é criado na máquina cliente e armazenado localmente na máquina cliente. A CA nunca tem sua chave privada. (Enterprise CA Key Archival está fora do escopo aqui.) A CA apenas assina sua solicitação de certificado. Quando você leva a solicitação de certificado assinada de volta ao seu cliente e a importa, ela é "casada" naquele momento com a chave privada.
Isso tudo é manual. A automação é um benefício dos clientes gerenciados por domínio do Active Directory e do Enterprise PKI. Mas você especificou que não ingressou no domínio.
(PS, eu acho que você poderia escrever um script para automatizar os comandos certreq e certutil necessários, mas eu não tenho esse script à mão. Talvez algo como isto .)
Editar: Nota final, você pode querer tentar configurar Key Archival em sua CA, então configurando RequestType = CMC e PrivateKeyArchive = True em sua solicitação de certificado, eu sinceramente não sei se isso funcionará de um não-domínio. juntou-se a máquina, mas em teoria poderia, porque você poderia transmitir com segurança sua chave privada do cliente para a CA usando o certificado da CA. (Embora você possa argumentar que, em princípio, é inseguro ter a chave privada armazenada em mais de um local.)
Mas nunca testei e não consigo documentá-lo.
(Não que você precise de Key Archival para implementar o procedimento básico de certreq que descrevi acima; fiz essa parte cem vezes e sei que funciona.)