I. Introdução
Conhecimento básico
1.1 Criptografia de chave pública
O criptosistema de chave pública é dividido em três partes, chave pública, chave privada e algoritmo de criptografia e descriptografia. Seu processo de criptografia e descriptografia é o seguinte:
Criptografia: criptografe o conteúdo (ou texto explicativo) por meio de um algoritmo de criptografia e uma chave pública para obter um texto cifrado. A chave pública é necessária para o processo de criptografia.
Descriptografar: descriptografe o texto cifrado por meio do algoritmo de descriptografia e da chave privada para obter o texto simples. O processo de descriptografia requer um algoritmo de descriptografia e uma chave privada. Observe que o conteúdo criptografado pela chave pública só pode ser descriptografado pela chave privada, ou seja, o conteúdo criptografado pela chave pública não pode ser descriptografado sem o conhecimento da chave privada.
A chave pública e o algoritmo do criptossistema de chave pública são públicos (por isso é chamado de criptossistema de chave pública), e a chave privada é mantida em segredo. Todos usam a chave pública para criptografar, mas apenas o detentor da chave privada pode descriptografá-la. No uso real, uma pessoa necessitada irá gerar um par de chaves pública e privada, publicar a chave pública para uso de outros e manter a chave privada para si.
1.2 algoritmos de chave simétrica
Em um algoritmo de criptografia simétrico, a chave usada para criptografar e a chave usada para descriptografar são as mesmas. Em outras palavras, tanto a criptografia quanto a descriptografia usam a mesma chave. Portanto, se o algoritmo de criptografia simétrica é para garantir a segurança, a chave deve ser mantida em segredo, de forma que só possa ser conhecida por quem a usa e não possa ser divulgada para o mundo exterior. Isso é diferente do criptosistema de chave pública acima. No criptosistema de chave pública, a chave pública é usada para criptografar e a chave privada é usada para descriptografar. No algoritmo de criptografia simétrica, a mesma chave é usada para criptografia e descriptografia, e nenhuma distinção é feita entre a chave pública e a chave privada. A chave, geralmente uma string ou número, é passada para o algoritmo de criptografia / descriptografia durante a criptografia ou descriptografia. A chave pública e a chave privada mencionadas no criptosistema de chave pública anterior são as chaves, a chave pública é a chave usada para criptografia e a chave privada é a chave usada para descriptografar.
1.3 Algoritmos de chave assimétrica
Em um algoritmo de criptografia assimétrica, a chave usada para criptografar e a chave usada para descriptografar são diferentes. O criptosistema de chave pública mencionado acima é um algoritmo de criptografia assimétrica. Sua chave pública e sua chave privada não podem ser iguais, ou seja, a chave usada para criptografar é diferente da chave usada para descriptografar, portanto, é uma criptografia não simétrica algoritmo. Algoritmo de criptografia simétrica.
1.4 Introdução ao RSA
RSA é um criptosistema de chave pública, que agora é amplamente usado. Se estiver interessado no próprio RSA, você pode verificar a introdução específica do RSA.
O criptossistema RSA é um criptossistema de chave pública no qual a chave pública é pública, a chave privada é mantida em segredo e seus algoritmos de criptografia e descriptografia são públicos. O conteúdo criptografado pela chave pública pode e só pode ser descriptografado pela chave privada, e o conteúdo criptografado pela chave privada pode e só pode ser descriptografado pela chave pública. Em outras palavras, o par de chaves públicas e privadas do RSA pode ser usado para criptografar e descriptografar, e o conteúdo criptografado por uma parte pode e só pode ser descriptografado pela outra parte.
1.5 Assinatura e criptografia
Quando falamos sobre criptografia, queremos dizer criptografar um determinado conteúdo, e o conteúdo criptografado também pode ser restaurado por descriptografia. Por exemplo, criptografamos um e-mail e o conteúdo criptografado é transmitido na rede.Depois de recebê-lo, o destinatário pode restaurar o conteúdo verdadeiro do e-mail por meio da descriptografia.
Aqui é principalmente para explicar a assinatura. A assinatura é para adicionar um pedaço de conteúdo após a mensagem, o que pode provar que a mensagem não foi modificada. Como esse efeito pode ser alcançado? Geralmente, um cálculo de hash é executado nas informações para obter um valor de hash. Observe que esse processo é irreversível, o que significa que o conteúdo da informação original não pode ser obtido por meio do valor de hash. Ao enviar as informações, criptografe o valor do hash como uma assinatura e envie-o com as informações. Depois de receber as informações, o receptor irá recalcular o valor hash da informação e compará-lo com o valor hash anexado à informação (após a descriptografia). Se eles forem consistentes, o conteúdo da informação não foi modificado, porque o cálculo do hash pode garantir Diferentes conteúdos definitivamente obterão diferentes valores de hash, portanto, desde que o conteúdo seja modificado, o valor de hash calculado com base no conteúdo da informação mudará. Claro, pessoas com más intenções também podem modificar o conteúdo das informações e também modificar o valor de hash para que possam corresponder. Para evitar isso, o valor de hash é geralmente criptografado (ou seja, uma assinatura) e, em seguida, enviado com as informações. Certifique-se de que este valor hash não seja modificado.
Processo de comunicação HTTPS
HTTPS é uma versão segura do HTTP, que pode proteger qualquer comunicação transmitida online por meio de conexões SSL / TLS. Resumindo, HTTPS = HTTP + SSL. Se quiser estabelecer uma conexão HTTPS, você deve primeiro registrar um certificado SSL de uma organização Gworg de autoridade de certificação (CA) confiável. Depois de instalar o certificado SSL, haverá um "S" após o HTTP na barra de endereço do site e um símbolo de cadeado de segurança verde.
O protocolo SSL (Secure Sockets Layer), e seu sucessor TLS (Transport Layer Security), é um protocolo de segurança que fornece segurança e integridade de dados para comunicações de rede.
1) O navegador envia uma solicitação HTTPS ao servidor;
2) O servidor deve ter um conjunto de certificados digitais, que podem ser feitos por você ou aplicados à organização. A diferença é que o certificado emitido por você precisa ser verificado pelo cliente antes de continuar a acessá-lo, enquanto o o certificado aplicado por uma empresa confiável não aparecerá. Na página, este conjunto de certificados é, na verdade, um par de chaves públicas e privadas;
3) O servidor irá transmitir a chave pública ao cliente;
4) Após o cliente (navegador) receber a chave pública, ele verificará se ela é legal e válida. Se for inválida, haverá um lembrete de aviso. Se for válida, uma string de números aleatórios será gerada e criptografada com a chave pública recebida;
5) O cliente transmite a string aleatória criptografada para o servidor;
6) Depois que o servidor recebe a sequência aleatória criptografada, ele primeiro a descriptografa com a chave privada (criptografia de chave pública, descriptografia de chave privada), após obter esta sequência de números aleatórios, então usa esta sequência de sequências aleatórias para criptografar os dados transmitidos ( a criptografia é criptografia simétrica, a chamada criptografia simétrica, consiste em misturar os dados e a chave privada, ou seja, essa string aleatória por meio de um determinado algoritmo, de forma que, a menos que a chave privada seja conhecida, o conteúdo dos dados não possa ser obtido) ;
7) O servidor transmite os dados criptografados ao cliente;
8) Depois que o cliente recebe os dados, ele os descriptografa com sua própria chave privada, que é a string aleatória;
9) Tanto o cliente quanto o servidor conhecem a chave simétrica e a usam para criptografar o usuário final durante a sessão. (O fluxograma é mostrado abaixo)
2.1 URL de acesso do cliente,
Um é https: //www.domain.com / ... para acessar diretamente através da porta 443 para o servidor;
O outro é http: //www.domain.com / .... para acessar a porta 80 para o servidor e reescrever de nginx para https: //www.domain.com / ... para ir para 443 novamente para o servidor ;
O servidor implanta o nginx para monitorar as portas 80 e 443 e todas as 80 são reconvertidas em 443. Esta etapa tem um redirecionamento adicional;
2. Gere o certificado SSL por você mesmo
Se você for instalar um certificado SSL para Nginx, o módulo SSL não é compilado por padrão, você precisa usar o parâmetro --with-http_ssl_module ao compilar Nginx, e o módulo compilado requer arquivos de biblioteca OpenSSL, geralmente você precisa instalar software openssl e openssl-devel.
# cd /usr/local/src/nginx-1.12.2
# ./configure --prefix = / usr / local / nginx --with-http_ssl_module
# fazer
# make install
2.1 Gerar chave privada com senha
Digite o diretório onde o nginx.conf está localizado. Após a instalação da fonte, o diretório do arquivo é / usr / local / nginx / conf. Se for a instalação do yum, o diretório do arquivo é / etc / nginx. Após entrar no diretório, crie o diretório ssl_cert. A chave correspondente é gerada no diretório, da seguinte maneira:
[root @ masternode /] # cd / etc / nginx [root @ masternode nginx] # mkdir ssl_cert [root @ masternode nginx] # cd ssl_cert [root @ masternode ssl_cert] # pwd / etc / nginx / ssl_cert [root @ masternode ssl_cert] # openssl genrsa -des3 -out tmp.key 2048 Gerando chave privada RSA, módulo longo de 2048 bits .............. +++ ............. ............................................... +++ e é 65537 (0x10001) Insira a frase secreta para tmp.key: Verificando - Insira a frase secreta para tmp.key: [root @ masternode ssl_cert] # ls -l total 4 -rw-r - r-- 1 root root 1751 Set 21 23:45 tmp.key
Ao gerar um arquivo de chave privada, você precisa inserir uma senha. Não é realista precisar inserir a chave toda vez que você usa um navegador para acessar HTTPS. Você precisa converter a chave privada e cancelar a senha. Siga as etapas abaixo.
2.2 Converter para uma chave privada sem senha
[root @ masternode ssl_cert] # openssl rsa -in tmp.key -out moonxy.key Insira a frase secreta para tmp.key: escrevendo a chave RSA [root @ masternode ssl_cert] # ls -l total 8 -rw-r - r- - 1 root root 1679 Set 21 23:46 moonxy.key -rw-r - r-- 1 root root 1751 Set 21 23:45 tmp.key [root @ masternode ssl_cert] # rm -f tmp.key [root @ masternode ssl_cert] # ls -l total 4 -rw-r - r-- 1 root root 1679 Set 21 23:46 moonxy.key
Exclua o tmp.key com a senha e mantenha apenas a chave privada moonxy.key sem senha.
2.3 Gerar arquivo de solicitação de certificado
[root @ masternode ssl_cert] # openssl req -new -key moonxy.key -out moonxy.csr Você será solicitado a inserir informações que serão incorporadas à sua solicitação de certificado. O que você está prestes a inserir é o que é chamado de Nome distinto ou DN. Existem alguns campos, mas você pode deixar alguns em branco. Para alguns campos, haverá um valor padrão. Se você inserir '.', O campo ficará em branco. ----- Nome do país (código de 2 letras) [XX]: Nome do estado ou província CN (nome completo) []: Nome da localidade de Hong Kong (por exemplo, cidade) [Cidade padrão]: Nome da organização de Hong Kong (por exemplo, empresa) [ Default Company Ltd]: moonxy Nome da unidade organizacional (por exemplo, seção) []: Linux Nome comum (por exemplo, seu nome ou nome de host do servidor) []: endereço de e- masternode Endereço de e-mail []: [email protected] Insira os seguintes atributos 'extras' a serem enviados com sua solicitação de certificado Uma senha de desafio []: 20190922 Um nome de empresa opcional []: amxx [root @ masternode ssl_cert] # ls -l total 8 -rw-r - r-- 1 root 1119 Set 22 15:55 moonxy.csr -rw-r - r-- 1 root root 1679 Set 21 23:46 moonxy.key
Depois de gerar o arquivo de solicitação de certificado moonxy.csr, usaremos ele e o arquivo moonxy.key de chave privada para gerar o arquivo de certificado final, que é a chave pública.
2.4 Gerar arquivo de certificado de chave pública
[root @ masternode ssl_cert] # openssl x509 -req -days 365 -in moonxy.csr -signkey moonxy.key -out moonxy.crt Assinatura ok subject = / C = CN / ST = Hong Kong / L = Hong Kong / O = moonxy / OU=Linux/CN=masternode/[email protected] Obtendo a chave privada [root @ masternode ssl_cert] # ls -l total 12 -rw-r - r-- 1 root 1298 Sep 22 16:02 moonxy. crt -rw-r - r-- 1 root root 1119 Set 22 15:55 moonxy.csr -rw-r - r-- 1 root root 1679 Set 21 23:46 moonxy.key
Desta forma, o arquivo de certificado CRT moonxy.crt é finalmente gerado, que é a chave pública mencionada acima.
Três, Nginx configura SSL
Crie um novo arquivo de configuração ssl.conf em / etc / nginx / vhost (se estiver compilado e instalado, geralmente / usr / local / nginx / conf / vhost) e adicione o seguinte conteúdo:
[root @ masternode vhost] # vim /etc/nginx/vhost/ssl.conf server { listen 443; server_name moonxy.com; index index.html index.php; root / data / www / nginx / moonxy; ssl on; ssl_certificate ssl_cert / moonxy.crt; ssl_certificate_key ssl_cert / moonxy.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; }
Em seguida, verifique a sintaxe do arquivo de configuração, crie index.html e inicie o serviço nginx, da seguinte maneira:
[root @ masternode vhost] # nginx -t nginx: a sintaxe do arquivo de configuração /etc/nginx/nginx.conf é ok nginx: arquivo de configuração /etc/nginx/nginx.conf teste bem-sucedido [root @ masternode vhost] # mkdir - p / data / www / nginx / moonxy [root @ masternode vhost] # vim /data/www/nginx/moonxy/index.html Este é o teste SSL para moonxy.com [root @ masternode vhost] # systemctl start nginx [root @ masternode vhost] # ps aux | grep nginx root 8810 0.0 0.2 125008 2144? Ss 16:31 0:00 nginx: processo mestre / usr / sbin / nginx nginx 8811 0,0 0,3 125404 3192? S 16:31 0:00 nginx: raiz do processo de trabalho 8813 0,0 0,0 112708 976 pts / 0 R + 16:31 0:00 grep --color = nginx automático
Em seguida, configure o mapeamento de nome de domínio no arquivo hosts local:
C: \ Windows \ System32 \ drivers \ etc 192.168.150.140 www.moonxy.com moonxy.com
Use o navegador Chrome para visitar https://moonxy.com.
Quarto, solicite um certificado por meio do Alibaba Cloud
Você pode se inscrever para um certificado Sysmantec SSL gratuito por meio do Alibaba Cloud. Observe que a taxa de compra mostrada à direita é 0,00, conforme a seguir