Explorar el Código

* Bug: la version de httpd en RHEL no acepta DHParam por separado
* Solución:
* Generar primero DHParam
* Añadirlo a cada certificado
* Nginx pasa a ser ahora el servidor web por defecto

Guzmán Castanedo Villalba hace 6 años
padre
commit
6702aea672
Se han modificado 1 ficheros con 34 adiciones y 24 borrados
  1. 34 24
      install

+ 34 - 24
install

@@ -513,7 +513,7 @@ inicializarVariables() {
 
 instalacionExpress() {
 # Permite una instalación rápida, haciendo el menor número de preguntas
-	apacheOn=true
+	nginxOn=true
 	mariaDBOn=true
 	phpOn=true
 	sslOn=true
@@ -542,7 +542,7 @@ mostrarBienvenida() {
 
 mostrarExpress() {
 # Pantalla de elección entre instalación express o avanzada
-	express=$(whiptail --title "INSTALACION EXPRESS" --radiolist "<ESPACIO>: seleccionar   <TAB>: cambiar   <FLECHAS>: moverse\n\nLa instalación express instala Apache2, MariaDB, PHP-7, Let's Encrypt, MediaWiki, Moodle y backups automático.\nSeleccione el tipo de instalación que desee:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) 2 \
+	express=$(whiptail --title "INSTALACION EXPRESS" --radiolist "<ESPACIO>: seleccionar   <TAB>: cambiar   <FLECHAS>: moverse\n\nLa instalación express instala Nginx, MariaDB, PHP-7, Let's Encrypt, MediaWiki, Moodle y backups automático.\nSeleccione el tipo de instalación que desee:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) 2 \
 	"Express" "Instalación rápida" ON \
 	"Avanzada" "Permite escoger todas las opciones disponibles" OFF \
 	--ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
@@ -565,18 +565,18 @@ mostrarExpress() {
 mostrarAvanzada() {
 # Pantalla que permite instalar un servidor LAMP o LEMP
 	webServer=$(whiptail --title "INSTALACION AVANZADA" --radiolist "<ESPACIO>: seleccionar   <TAB>: cambiar   <FLECHAS>: moverse\n\nEscoge el tipo de Servidor Web que quieres instalar:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) 2 \
-	"LAMP" "GNU/Linux + Apache + MySQL/MariaDB + PHP-7" ON \
-	"LEMP" "GNU/Linux + Nginx + MySQL/MariaDB + PHP-7" OFF \
+	"LEMP" "GNU/Linux + (E)Nginx + MySQL/MariaDB + PHP-7" ON \
+	"LAMP" "GNU/Linux + Apache + MySQL/MariaDB + PHP-7" OFF \
 	--ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
 	comprobarError $? 1
 	for i in $webServer; do
 		case $i in
-			LAMP)
-				apacheOn=true
-				;;
 			LEMP)
 				nginxOn=true
 				;;
+			LAMP)
+				apacheOn=true
+				;;
 			*)
 				comprobarError 1 100
 				;;
@@ -1281,6 +1281,7 @@ generarCertAutofirmado() {
 	keyFile="$sslDir/$dominio.key"
 	reqFile="$sslDir/$dominio.csr"
 	certFile="$sslDir/$dominio.crt"
+	dhParamFile="$sslDir/dhparam.pem"
 	if [ ! -d "$sslDir" ];then
 		mkdir "$sslDir" 2>/dev/null
 		comprobarError $? 5 "$sslDir"
@@ -1297,12 +1298,17 @@ generarCertAutofirmado() {
 	# Eliminamos petición
 	rm -f $reqFile
 	comprobarError $? 402
+	# Añadimos clave Diffie-Hellman al certificado
+	if [ -f "$dhParamFile" ];then
+		cat "$dhParamFile" >> $certFile
+		comprobarError $? 402
+	fi
 	# Cambiamos permisos
 	chmod 644 $certFile
 	comprobarError $? 402
 	chmod 400 $keyFile
 	comprobarError $? 402
-	unset dominio sslDir keyFile reqFile certFile
+	unset dominio sslDir keyFile reqFile certFile dhParamFile
 }
 
 generarDHParam() {
@@ -1310,7 +1316,7 @@ generarDHParam() {
 # Esto aumenta notablemente la seguridad de SSL/TLS
 	sslDir="/etc/$webServerName/ssl"
 	dhParamFile="$sslDir/dhparam.pem"
-	apacheConfFile=""
+#	apacheConfFile=""
 	nginxConfFile="/etc/$webServerName/nginx.conf"
 	if [ ! -d "$sslDir" ];then
 		mkdir "$sslDir" 2>/dev/null
@@ -1319,21 +1325,25 @@ generarDHParam() {
 	openssl dhparam -out "$dhParamFile" 2048 >/dev/null 2>&1
 	comprobarError $? 403
 	# Configuramos Servidor Web
-	if [ $apacheOn = true ];then
-		if [ $debianOS = true ];then
-			apacheConfFile="/etc/$webServerName/apache2.conf"
-		elif [ $rhelOS = true ];then
-			apacheConfFile="/etc/$webServerName/conf/httpd.conf"
-		else
-			comprobarError 1 403
-		fi
-		echo -en "\n# Set Stronger Diffie-Hellman key exchange\n" >> $apacheConfFile
-		echo -en "SSLOpenSSLConfCmd DHParameters \"$dhParamFile\"\n" >> $apacheConfFile
-	elif [ $nginxOn = true ];then
+#	if [ $apacheOn = true ];then
+#		if [ $debianOS = true ];then
+#			apacheConfFile="/etc/$webServerName/apache2.conf"
+#		elif [ $rhelOS = true ];then
+#			# La version de httpd de RHEL no acepta SSLOpenSSLConfCmd
+#			# Solución: añadirlo al certificado
+#			apacheConfFile="/etc/$webServerName/conf/httpd.conf"
+#		else
+#			comprobarError 1 403
+#		fi
+#		echo -en "\n# Set Stronger Diffie-Hellman key exchange\n" >> $apacheConfFile
+#		echo -en "SSLOpenSSLConfCmd DHParameters \"$dhParamFile\"\n" >> $apacheConfFile
+#	el
+	if [ $nginxOn = true ];then
 		sed -i '/ssl_param /c\\tssl_dhparam '$dhParamFile';' $nginxConfFile
 		comprobarError $? 403
 	fi
-	unset sslDir dhParamFile apacheConfFile nginxConfFile
+#	unset sslDir dhParamFile apacheConfFile nginxConfFile
+	unset sslDir dhParamFile nginxConfFile
 }
 
 habilitarServicio() {
@@ -1788,6 +1798,9 @@ instalarPHPInfo() {
 # Configuración SSL/TLS
 	# Generar certificados auto-firmados
 	if [ $sslOn = true ];then
+		echo -en "Generando claves de intercambio Diffie-Hellman (puede llevar un largo tiempo)..." | tee -a $logFile
+		generarDHParam
+		echo -en " OK.\n" | tee -a $logFile
 		echo -en "Generando Certificados Auto-Firmados..." | tee -a $logFile
 		if [ $mediaWikiOn = true ];then
 			generarCertAutofirmado $dominioMediaWiki
@@ -1799,9 +1812,6 @@ instalarPHPInfo() {
 			generarCertAutofirmado "localhost"
 		fi
 		echo -en " OK.\n" | tee -a $logFile
-		echo -en "Generando claves de intercambio Diffie-Hellman (puede llevar un largo tiempo)..." | tee -a $logFile
-		generarDHParam
-		echo -en " OK.\n" | tee -a $logFile
 	fi
 
 # Arrancar y habilitar todos los servicios (SystemD, Service o SystemV)