Base de conocimientos
1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Esta guía trata sobre el soporte de funciones de hash seguro (incluyendo SHA-256) por los servidores Infomaniak, así como el énfasis en la seguridad de los certificados SSL/TLS utilizando CSR generados con SHA-256.
Algoritmo de hash SHA-256
La función de hash criptográfico SHA-1 es compatible y los servidores Infomaniak también soportan la función SHA-256, útil especialmente para Paypal y SaferPay (SIX).
Las CSR (certificate signing requests) son en SHA-256 y no en SHA-1.
Esta guía le ayudará, por ejemplo, si desea desplegar un paquete como pymysql
y este requiere una versión de Python superior a la ofrecida en su alojamiento.
Prólogo
- Anaconda es una distribución libre y de código abierto de los lenguajes de programación Python. Esta distribución tiene como objetivo simplificar la gestión de paquetes y el despliegue.
- Se recomienda usar conda que viene con una versión reciente de python y se instala en el espacio del usuario, de modo que no haya conflictos con el sistema python (como en un entorno virtual, que siempre requiere una instalación del sistema de la versión deseada).
- Consulte la documentación oficial.
⚠️ Para obtener ayuda adicional contacte a un socio o lanza una oferta gratuita — también descubre el rol del proveedor de alojamiento.
Descargar el instalador
uid165116@od-12345:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
--2021-07-28 18:21:10-- https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8303, 2606:4700::6810:8203, 104.16.131.3, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8303|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89026327 (85M) [application/x-sh]
Saving to: ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’
Miniconda3-py37_4.10.3-Linux-x86_64.sh 100% [==============================================>] 84.90M 203MB/s in 0.4s
18:21:11 (100 MB/s) - ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’ saved [89026327/89026327]
Verificar el hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Iniciar la instalación
uid165116@od-12345:~$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b
PREFIX=/home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py37h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py37h06a4308_0
- cffi==1.14.6=py37h400218f_0
- chardet==4.0.0=py37h06a4308_1003
- conda-package-handling==1.7.3=py37h27cfd23_1
- conda==4.10.3=py37h06a4308_0
- cryptography==3.4.7=py37hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py37h06a4308_0
- pycosat==0.6.3=py37h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py37_1
- python==3.7.10=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py37h27cfd23_0
- setuptools==52.0.0=py37h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py37h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py37h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py37h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py37h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py37h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py37h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py37hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py37h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py37h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py37_1
python pkgs/main/linux-64::python-3.7.10-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py37h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
Preparing transaction: done
Executing transaction: done
installation finished.
Iniciar conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)
Instalar pymysql (por ejemplo)
(base) uid165116@od-12345:~$ python3 -V
Python 3.7.10
(base) uid165116@od-12345:~$ pip3 install pymysql --user
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|████████████████████████████████| 43 kB 892 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
Esta guía explica cómo…
- … generar una
CSR
y clave privada para solicitar un certificado de un tercero a una autoridad de certificación (CA
), - … importar este certificado para tu sitio Infomaniak, gracias al
CRT
obtenido de laCA
.
Prólogo
- Aunque Infomaniak ofrece todos los certificados SSL que podrías necesitar…
- certificados gratuitos Let's Encrypt para los sitios personales (solo posible con los sitios alojados en Infomaniak),
- certificados DV de Sectigo para los sitios profesionales/particulares que no están inscritos en el registro mercantil,
- certificados EV de Sectigo para las empresas inscritas en el registro mercantil,
- … también es posible instalar un certificado SSL obtenido en otro lugar (certificado intermedio de una autoridad de certificación de su elección), certificados personalizados o auto-firmados.
1. Generar una CSR (Solicitud de Firma de Certificado)
Una CSR
(Certificate Signing Request
o Solicitud de Firma de Certificado) es un archivo codificado que contiene la información necesaria para solicitar un certificado SSL/TLS.
Debe generarse desde su lado para garantizar que la clave privada permanezca bajo su control, utilizando por ejemplo OpenSSL.
Adapte y ejecuta el siguiente comando desde una aplicación de tipo Terminal
(interfaz de línea de comandos, CLI /Command Line Interface
) en tu dispositivo:
openssl req -utf8 -nodes -sha256 -newkey rsa:2048 -keyout domain.xyz.key -out domain.xyz.csr -addext "subjectAltName = DNS:domain.xyz, DNS:www.domain.xyz"
Explicaciones
newkey rsa:2048
: Genera una nueva clave RSA de 2048 bits.keyout domain.xyz.key
: Especifica el archivo donde se guardará la clave privada.out domain.xyz.csr
: Especifica el archivo donde se guardará la CSR.addext “subjectAltName = ...”
: Añade dominios adicionales a través de la extensiónSAN (Subject Alternative Name)
, necesaria para incluir todos los dominios deseados en el certificado (el dominio principal domain.xyz + cualquier otro dominio o subdominio asociado, como www.domain.xyz).
Después de la generación, puede verificar el contenido de la CSR con el siguiente comando:
openssl req -in domain.xyz.csr -noout -text
Esto permite verificar que todos los dominios listados en subjectAltName
están correctamente incluidos.
Una vez generada la CSR, puede enviarla a la autoridad de certificación (CA
) para obtener su certificado SSL/TLS.
2. Importar el certificado externo
Una vez validada, la CA
le entrega un certificado (domain.xyz.crt
) y a veces un certificado intermedio (ca_bundle.crt
). Para acceder a la gestión de los certificados SSL:
- Haga clic aquí para acceder a la gestión de su producto en el Manager Infomaniak (¿necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto en cuestión.
- Haga clic en Certificados SSL en el menú lateral izquierdo.
- Haga clic en el botón azul Instalar un certificado:
- Seleccione el certificado personalizado.
- Haga clic en el botón Siguiente:
- Importe su certificado y clave privada, ya sea importando los archivos
.crt
y.key
o pegando. - Haga clic en Completar:
Comando alternativo para generar un certificado autofirmado (opcional)
Si desea un certificado local solo para pruebas o sin pasar por una CA
(no recomendado para producción), puede usar este comando:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout domain.xyz.key -out domain.xyz.crt -addext “subjectAltName = DNS:domain.xyz, DNS:www.domain.xyz”
Esto genera tanto un certificado auto-firmado (domain.xyz.crt
) como una clave privada (domain.xyz.key
). Sin embargo, los certificados auto-firmados no son reconocidos como válidos por los navegadores o sistemas públicos. Solo son adecuados para entornos internos o de desarrollo.
Importar un certificado intermedio
Al agregar un certificado SSL personalizado, es posible importar el certificado intermedio (mediante la importación del archivo .crt
o pegando los datos proporcionados por la entidad certificadora):