Configuração do Nginx processo de comunicação do protocolo SSL e HTTPS

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)

                                                                                A compreensão do https e a implantação real do nginx 1

 

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:

Copiar código

[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

Copiar código

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

Copiar código

[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

Copiar código

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

Copiar código

[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

Copiar código

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

Copiar código

[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

Copiar código

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:

Copiar código

[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; 
}

Copiar código

Em seguida, verifique a sintaxe do arquivo de configuração, crie index.html e inicie o serviço nginx, da seguinte maneira:

Copiar código

[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

Copiar código

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


 

Acho que você gosta

Origin blog.csdn.net/smilejiasmile/article/details/112530462
Recomendado
Clasificación