Eu tenho subdomain.example.com
que eu uso para fins de desenvolvimento. Minha solução de aplicativo da web contém uma API da web, etc, que eu preciso chamar de sistemas externos; portanto, não estou usando o host local.
Agora preciso testar o SSL e preciso de um certificado para o meu subdomain.example.com
nome de domínio de desenvolvimento.
Tentei criar um certificado autoassinado, conforme descrito em http://technet.microsoft.com/en-us/library/cc753127(v=ws.10).aspx , mas esse certificado funciona apenas para o host local. Este certificado pode ser usado para minha finalidade ou terei que criar um autoassinado para meu subdomínio de desenvolvimento? Se eu tiver que criar uma certificação autoassinada para meu subdomínio de desenvolvimento, que utilitário ou serviço online (Grátis) posso usar para isso?
fonte
makecert.exe
para estar no meu caminho. Para os certificados, pensei que seria mais seguro e usar-a SHA512 -len 8192
- demorou uma eternidade para gerar. E como eu suspeitava, não teve impacto sobre o nível de criptografia usado pelo IIS. Por padrão, o IIS usa 128 bits, você precisa fazer coisas de diretiva de grupo para alterar isso. Nota adicional para outros leitores: não altere os números mágicos depois-eku
, eles são necessários.sha1
. Substitua-a sha512
e considere adicionar-len 2048
à segundamakecert
invocação e tudo deve estar bem.Usando o PowerShell
No Windows 8.1 e Windows Server 2012 R2 (Windows PowerShell 4.0) e superior, você pode criar um certificado autoassinado usando o novo
New-SelfSignedCertificate
cmdlet:Exemplos:
Usando o Gerenciador do IIS
www.domain.com
ousubdomain.domain.com
fonte
New-SelfSignedCertificate -FriendlyName *.mydomain.local -DnsName *.mydomain.local, localhost -CertStoreLocation Cert:\LocalMachine\My
Isso cria um certificado na loja pessoal. Em seguida, primeiro exportei o certificado para um arquivo e depois reimportei-o para o IIS via Gerenciador do IIS (para usá-lo na ligação https) e depois para CAs raiz confiáveis via MMC (para evitar avisos do navegador).-NotAfter
opção também é útil para especificar uma data de validade (sem ela, o padrão é apenas 1 ano). Exemplo que eu useiNew-SelfSignedCertificate -DnsName *.mydomain.com -FriendlyName *.mydomain.com -NotAfter (Get-Date).AddYears(15) -CertStoreLocation cert:\LocalMachine\My
Para criar o novo certificado para seu domínio específico:
Abra o Powershell ISE como administrador, execute o comando:
Para confiar no novo certificado:
Para vincular o certificado ao seu site:
fonte
Eu tive que descobrir os certificados autoassinados no Windows, combinando partes das respostas fornecidas e outros recursos. Aqui está o meu próprio (e espero que completo) passo a passo. Espero que poupe um pouco da minha dolorosa curva de aprendizado. Ele também contém informações sobre tópicos relacionados que aparecerão mais cedo ou mais tarde quando você criar seus próprios certificados.
Crie um certificado autoassinado no Windows 10 e abaixo
Não use makecert.exe. Foi preterido pela Microsoft.
A maneira moderna usa um comando do PowerShell.
Windows 10:
Abra o PowerShell com privilégios de administrador:
Windows 8, Windows Server 2012 R2:
No Powershell nesses sistemas, os parâmetros -FriendlyName e -NotAfter não existem. Simplesmente remova-os da linha de comando acima.
Abra o PowerShell com privilégios de administrador:
Uma alternativa é usar o método para a versão mais antiga do Windows abaixo, que permite usar todos os recursos do Win 10 para criação de certificados ...
Versões mais antigas do Windows:
Minha recomendação para versões mais antigas do Windows é criar o certificado em uma máquina Win 10, exportá-lo para um arquivo .PFX usando uma instância mmc (consulte "Confiar no certificado" abaixo) e importá-lo para o armazenamento de certificados na máquina de destino com o sistema operacional Windows antigo. Para importar o certificado, NÃO clique com o botão direito do mouse. Embora exista um item "Importar certificado" no menu de contexto, todas as minhas tentativas falharam em usá-lo no Win Server 2008. Em vez disso, abra outra instância mmc na máquina de destino, navegue até "Certificados (Computador Local) / Pessoal / Certificados" , clique com o botão direito do mouse no painel do meio e selecione Todas as tarefas → Importar.
O certificado resultante
Ambos os comandos acima criam um certificado para os domínios
localhost
e*.dev.local
.A versão Win10 também possui um tempo de vida útil de 15 anos e um nome de exibição legível "Dev Cert * .dev.local, dev.local, localhost".
Atualização: Se você fornecer várias entradas de nome de host no parâmetro
-DnsName
(como mostrado acima), a primeira dessas entradas se tornará o Assunto do domínio (Nome Comum AKA). A lista completa de todas as entradas de nome de host será armazenada no campo Nome Alternativo do Assunto (SAN) do certificado. (Obrigado a BenBewards por apontar isso.)Após a criação, o certificado estará imediatamente disponível em todas as ligações HTTPS do IIS (instruções abaixo).
Confie no certificado
O novo certificado não faz parte de nenhuma cadeia de confiança e, portanto, não é considerado confiável por nenhum navegador. Para mudar isso, copiaremos o certificado no armazenamento de certificados das CAs raiz confiáveis em sua máquina:
Abra mmc.exe, Arquivo → Adicionar / Remover Snap-In → escolha "Certificados" na coluna esquerda → Adicionar → escolha "Conta do Computador" → Avançar → "Computador Local ..." → Concluir → OK
Na coluna da esquerda, escolha "Certificados (Computador Local) / Pessoal / Certificados".
Encontre o certificado recém-criado (no Win 10, a coluna "Nome amigável" pode ajudar).
Selecione este certificado e pressione Ctrl-C para copiá-lo para a área de transferência.
Na coluna esquerda, escolha "Certificados (computador local) / CAs / certificados raiz confiáveis".
Pressione Ctrl-V para colar seu certificado nesta loja.
O certificado deve aparecer na lista de autoridades raiz confiáveis e agora é considerado confiável.
Use no IIS
Agora você pode acessar o Gerenciador do IIS, selecionar as ligações de um site local → Adicionar → https → inserir o nome do host do formulário
myname.dev.local
(seu*.dev.local
certificado é válido apenas ) e selecionar o novo certificado → OK.Adicionar aos hosts
Adicione também o nome do seu host a C: \ Windows \ System32 \ drivers \ etc \ hosts:
Feliz
Agora, o Chrome e o IE devem tratar o certificado como confiável e carregar o site quando você abrir
https://myname.dev.local
.O Firefox mantém seu próprio armazenamento de certificados. Para adicionar seu certificado aqui, você deve abrir seu site no FF e adicioná-lo às exceções quando o FF o avisar sobre o certificado.
Para o navegador Edge, pode haver mais ação necessária (veja mais abaixo).
Teste o certificado
Para testar seus conhecimentos, o Firefox é sua melhor escolha. (Acredite, eu também sou fã do Chrome, mas FF é melhor nesse caso.)
Aqui estão os motivos:
Este aviso está correto! Como observado acima, o Firefox não usa o armazenamento de certificados do Windows e confiará apenas neste certificado, se você adicionar uma exceção. O botão para fazer isso está logo abaixo dos avisos.
Este aviso mostra que você fez algo errado. O domínio (curinga) do seu certificado não corresponde ao domínio do seu site. O problema deve ser resolvido alterando o (sub-) domínio do site ou emitindo um novo certificado que corresponda. Na verdade, você pode adicionar uma exceção no FF, mesmo que o certificado não corresponda, mas você nunca obteria um símbolo de cadeado verde no Chrome com essa combinação.
O Firefox pode exibir muitos outros avisos de certificação agradáveis e compreensíveis neste local, como certificados expirados, certificados com algoritmos de assinatura desatualizados etc. Não encontrei outro navegador que me desse esse nível de feedback para solucionar qualquer problema.
Qual padrão de (sub) domínio devo escolher desenvolver?
No comando New-SelfSignedCertificate acima, usamos o domínio curinga
*.dev.local
.Você pode pensar: por que não usar
*.local
?Motivo simples: é ilegal como um domínio curinga.
Os certificados curinga devem conter pelo menos um nome de domínio de segundo nível.
Portanto, os domínios do formulário
*.local
são bons para desenvolver sites HTTP. Mas não muito para HTTPS, porque você seria forçado a emitir um novo certificado correspondente para cada novo projeto iniciado.Notas laterais importantes:
motör_head.dev.local
ao seu padrão curinga*.dev.local
. Eles cumprirão quando você alternar paramotoer-head.dev.local
.*.dev.local
corresponde,myname.dev.local
mas NÃOother.myname.dev.local
!*.*.dev.local
) NÃO são possíveis em certificados. Portanto,other.myname.dev.local
só pode ser coberto por um curinga do formulário*.myname.dev.local
. Como resultado, é melhor não usar uma parte do domínio de quarto nível. Coloque todas as suas variações na parte do terceiro nível. Dessa forma, você se dará bem com um único certificado para todos os seus sites de desenvolvimento.O problema com o Edge
Não se trata realmente de certificados autoassinados, mas ainda relacionados a todo o processo:
Após seguir as etapas acima, o Edge pode não mostrar nenhum conteúdo quando você abre
myname.dev.local
.O motivo é um recurso característico do gerenciamento de rede do Windows 10 para aplicativos modernos, chamado "Isolamento de rede".
Para resolver esse problema, abra um prompt de comando com privilégios de administrador e digite o seguinte comando uma vez:
Mais informações sobre o isolamento de borda e rede podem ser encontradas aqui: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
fonte
appname.dev has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
que, como afirma, não permite que você adicione a exceção do cliente, ao contrário de suas instruções. Essa é uma configuração incorreta no próprio IIS em relação às configurações de SSL, Exigir SSL e as opções de certificados de cliente?*.mydomain.com
pode ser um certificado válido para,me.mydomain.com
mas não parame.at.mydomain.com
.Encontrei esse mesmo problema quando queria habilitar o SSL para um projeto hospedado no IIS 8. Finalmente, a ferramenta que usei foi o OpenSSL , depois de muitos dias lutando com os comandos makecert. O certificado é gerado no Debian, mas eu poderia importá-lo perfeitamente para IIS 7 e 8.
Faça o download do OpenSSL compatível com seu sistema operacional e este arquivo de configuração. Defina o arquivo de configuração como configuração padrão do OpenSSL.
Primeiro, geraremos a chave privada e o certificado da Autoridade de Certificação (CA). Este certificado é para assinar a solicitação de certificado (CSR).
Você deve preencher todos os campos necessários neste processo.
openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096
Você pode criar um arquivo de configuração com configurações padrão como esta: Agora, geraremos a solicitação de certificado, que é o arquivo enviado às autoridades de certificação.
O Nome comum deve ser definido como o domínio do seu site, por exemplo: public.organization.com .
openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096
Agora, a solicitação de certificado é assinada com o certificado CA gerado.
openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem
O certificado gerado deve ser exportado para um arquivo .pfx que pode ser importado para o IIS.
openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"
Nesta etapa, importaremos o certificado CA.
No servidor, você deve importar o certificado da CA para as Autoridades de Certificação Raiz Confiáveis, para que o IIS possa confiar na importação do certificado. Lembre-se de que o certificado a ser importado para o IIS foi assinado com o certificado da CA.
Com esta etapa, o IIS confia na autenticidade do nosso certificado.
Em nossa última etapa, importaremos o certificado para o IIS e adicionaremos o site de ligação.
Agora vá ao seu site no Gerenciador do IIS e selecione Ligações ... e Adicione uma nova ligação.
Selecione https como o tipo de ligação e você poderá ver o certificado importado.
fonte
Outra opção é criar um certificado autoassinado que permita especificar o nome de domínio por site. Isso significa que você pode usá-lo em vários nomes de domínio.
No Gerenciador do IIS
Agora, no seu site no IIS ...
fonte
Outra maneira fácil de gerar um certificado autoassinado é usar o Jexus Manager,
https://www.jexusmanager.com/en/latest/tutorials/self-signed.html
fonte