Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Resolvendo o Desafio "Palindrome Number" do LeetCode com XBase e TLPP

_Créditos das imagens: ChatGPT_ ### LeetCode :: **Resolvendo o Desafio "Palindrome Number" do LeetCode com XBase e TLPP** No mundo da programação, os desafios do LeetCode são uma excelente maneira de aprimorar nossas habilidades de codificação. Um desses é o desafio [**Palindrome Number** (Número Palíndromo)](https://leetcode.com/problems/palindrome-number/description/). Neste artigo, vamos explorar como resolvemos esse desafio utilizando XBase e TLPP (linguagens que possuem um poderoso conjunto de ferramentas para o desenvolvimento de soluções rápidas e eficientes). #### Descrição do Desafio O problema **Palindrome Number** exige que verifiquemos se um número inteiro é um palíndromo. Ou seja, o número deve ser lido da mesma forma de trás para frente como é lido da frente para trás. Exemplos de números palíndromos incluem: 121, 12321, etc. Já números como 123, 10, e -121 não são palíndromos, pois sua leitura invertida não é igual ao número original. A ideia é criar uma f...

BlackTDN :: OpenSSL :: Usando HTTPS em localhost ( Gerando o Certificado Assinado no Ubuntu via WSL2)

referência da imagem: OpenSSL

Pressupondo que já tenha o WSL2 instalado, funcionando e com uma distribuição linux Ubuntu instalada (caso contrário siga os procedimentos: Instalar o Linux no Windows com o WSL para habilitar a WSL e instalar a sua versão do Ubuntu, ou outra de sua preferência)

1)Atualizando o Ubuntu: Abra o terminal do windows, em modo administrador


1.1) Execute o seguinte comando:

wsl --user root


1.2) No terminal WSL aberto digite:
    
apt-get update && sudo apt-get upgrade
    
isso irá atualizar a distribuição Ubuntu
1.3) Instalando os Pré-Requisitos:
    
    apt install build-essential checkinstall zlib1g-dev -y
    

1.4) Baixando e instalando o OpenSSL:

1.4.1) Execute:
    
cd /usr/local/src/
    

Isso movera o poteiro de diretórios para /usr/local/src/
1.4.2) Acesseopenssl downloads.  Escolha a versão do OpenSSL que deseja baixar e copie o link:
1.4.3) Baixe a versão escolhida digitando:
    
wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz --no-check-certificate
    
1.4.3.1) Obs.: Substitua https://www.openssl.org/source/openssl-1.1.1u.tar.gz pela versão de sua escolha.

1.4.3.2) Extraia o arquivo baixado com o seguinte comando:
    
tar -xf openssl-1.1.1u.tar.gz    
    
1.4.3.3) Navegue até a pasta extraida. Neste caso:
    
cd openssl-1.1.1u
    
1.4.3.4) Instalando o OpenSSL. Execute os seguintes comando para instalar o OpenSSL.
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
make test
make install
Aguarde finalizar a instalação...
Pressione ENTER
1.4.3.5) Configurando as Bibliotecas Compartilhadas do OpenSSL. Crie um novo arquivo de configuração openssl-1.1.1u.conf para o OpenSSL em /etc/ld.so.conf.d/ :
    
nano /etc/ld.so.conf.d/openssl-1.1.1u.conf
    
e Adicione a seguinte linha ao arquivo.
    
/usr/local/ssl/lib
    
Salve e saia do arquivo (CTRL X Y ENTER). Atualize as configurações com o seguinte comando:
    
ldconfig -v
    
1.4.3.6) Configurando o Binário do OpenSSL.
1.4.3.6.1) Abra a variável de ambiente PATH:
    
nano /etc/environment
    
1.4.3.6.1) Adicione a pasta :/usr/local/bin/openssl à variável PATH. Observe o dois-pontos no início do caminho da pasta. E observe, também, se não existe outra referencia ao OpenSSL (existindo, substitua).  PATH vai ficar com algo parecido com isso: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
1.4.3.6.2) Salve e feche o arquivo. Agora atualize o ambiente PATH com o seguinte comando:
    
source /etc/environment
    
1.4.3.6.3) Verifique a versão do OpenSSL:openssl version -a
OpenSSL 1.1.1u  30 May 2023

Pronto, finalizamos a instalação/atualização/configuração do OpenSSL.


2) Agora vamos à geração do Certificado.

2.1) Execute o seguinte comando:
    
cd /usr/local
    
2.1.1) Crie a pasta tmp executando o seguinte comando
    
mkdir tmp
    
2.1.2) Acesse a pasta tmp com:
    
cd tmp
    
2.1.3) Para gerar um certificado com chave RSA-2048 digite o seguinte comando:
    
openssl genrsa -des3 -out rootCA.key 2048
    
2.1.3.1) Informe uma senha para a sua chave RSA-2048
2.1.3.1.1) Confirme a senha:
Com isso, o arquivo rootCA.key será gerado.
2.1.3.2.1) Agora vamos usar a chave gerada para criar um certificado root com validade de aproximadamente 10 anos (3652 dias, você pode trocar o número de dias conforme sua necessidade). Digite:
    
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3652 -out rootCA.pem
    
informe a senha usada para criar a chave RSA-2048

2.1.3.2.2) Informe os dados necessários para a geração do certificado root:
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:ES
Locality Name (eg, city) []:Serra

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nome da Sua Empresa

Organizational Unit Name (eg, section) []:Tecnologia

Common Name (e.g. server FQDN or YOUR name) []:Nome do Responsavel

Email Address []:email_da_minha_empresa_@minhaempresa.com.br

2.1.3.3) Gerando o Certificado de Domínio: localhost. server.csr.cnf com o seguinte comando:
    
nano server.csr.cnf
    
2.1.3.3.1) Carregue o conteúdo abaixo no arquivo server.csr.cnf (Modificando os valores em negrito conforme sua necessidade)
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=US
ST=RandomState
L=RandomCity
O=RandomOrganization
OU=RandomOrganizationUnit
emailAddress=hello@example.com
CN = localhost                                                                                                            
    
(CTRL X Y ENTER, para salvar)
2.1.3.3.2) Para criar um certificado X509 v3, crie, usando
    
nano v3.ext
    
Um arquivo v3.ext (Atente-se que estamos definindo subjectAltName aqui) e cole o conteúdo abaixo:
    
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
    
(CTRL X Y ENTER, para salvar)
2.1.3.3.3) Agora, vamos criar uma chave de certificado para localhost usando as definições de configuração armazenadas em server.csr.cnf. Essa chave é armazenada em server.key. Para isso digite:
    
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )
    
Gerandoserver.csr
2.1.3.3.4) Para finalizar, vamos gerar o arquivo server.key. Para isso digite:
    
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 3652 -sha256 -extfile v3.ext
    
Gerandoserver.key
informe a senha usada para criar a chave RSA-2048
2.1.3.4.5) Com isso finalizamos a geração dos Certificados.

3)Confiar no certificado SSL root
3.1) Copie os arquivos: rootCA.pem, server.crt e server.key para o destino de utilização, no meu caso o Apache. Neste caso executei:
    
cp rootCA.pem server.crt server.key /mnt/c/Apache24/conf/ssl/
    
3.2) "Confiando" com o Microsoft Edge: Abra o Microsoft Edge e vá em configurações:
3.3) Pesquise por "cert"
3.4) Clique em "Gerenciar Certificados" e Depois em "Autoridades de Certificação Raiz Confiáveis"
3.5) Clique em "Importar"
Clique em Avançar
Selecione o arquivo rootCA.pem (Observe: Todos os arquivos)
arquivo rootCA.pem selecionado. Clique em Avançar.
Informe um local para o armazenamento do Certificado:"Autoridades de Certificação Raiz Confiáveis"

Clique em "Concluir" para finalizar a importação.
confirme a instalação

4) Usando o novo certificado. Exemplo: Apache. Arquivo: httpd-ahssl.conf
5) Testando o novo Certificado no Microsoft Edge: localhost
6)Testando o novo Certificado no Mozilla Firefox : localhost
Vá em configurações
pesquise por cert e clique em "Ver Certificados"
clique em "Importar"
Selecione o arquivo: rootCA.pem
Marque as duas opções acima e clique em "OK"


























































Comentários

Postagens mais visitadas