From 85dfd7d6ee3bcf15d0cbabe902e1a5a5427d6754 Mon Sep 17 00:00:00 2001
From: rudolfkoenig <>
Date: Sun, 14 Oct 2018 12:57:06 +0000
Subject: [PATCH] TcpServerUtils.pm: add sslCertPrefix option (Forum #92030)
git-svn-id: https://svn.fhem.de/fhem/trunk@17529 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/00_MQTT2_SERVER.pm | 15 +++++++++++++--
fhem/FHEM/01_FHEMWEB.pm | 15 ++++++++++++++-
fhem/FHEM/98_telnet.pm | 28 +++++++++++++++++++++++++---
fhem/FHEM/TcpServerUtils.pm | 5 +++--
4 files changed, 55 insertions(+), 8 deletions(-)
diff --git a/fhem/FHEM/00_MQTT2_SERVER.pm b/fhem/FHEM/00_MQTT2_SERVER.pm
index fae85961d..f1f00eb79 100644
--- a/fhem/FHEM/00_MQTT2_SERVER.pm
+++ b/fhem/FHEM/00_MQTT2_SERVER.pm
@@ -36,11 +36,13 @@ MQTT2_SERVER_Initialize($)
no warnings 'qw';
my @attrList = qw(
+ SSL:0,1
+ autocreate
disable:0,1
disabledForIntervals
- autocreate
rawEvents
- SSL:0,1
+ sslVersion
+ sslCertPrefix
);
use warnings 'qw';
$hash->{AttrList} = join(" ", @attrList);
@@ -580,6 +582,15 @@ MQTT2_SERVER_getStr($$)
Enable SSL (i.e. TLS)
+
sslVersion
+ See the global attribute sslVersion.
+
+
+ sslCertPrefix
+ Set the prefix for the SSL certificate, default is certs/server-, see
+ also the SSL attribute.
+
+
autocreate
If set, MQTT2_DEVICES will be automatically created upon receiving an
diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm
index 5b6fa5d17..1be6e94d4 100644
--- a/fhem/FHEM/01_FHEMWEB.pm
+++ b/fhem/FHEM/01_FHEMWEB.pm
@@ -187,9 +187,10 @@ FHEMWEB_Initialize($)
refresh
reverseLogs:0,1
roomIcons
- sortRooms
showUsedFiles:0,1
+ sortRooms
sslVersion
+ sslCertPrefix
smallscreen:unused
smallscreenCommands:0,1
stylesheetPrefix
@@ -3911,6 +3912,12 @@ FW_widgetOverride($$)
See the global attribute sslVersion.
+
+ sslCertPrefix
+ Set the prefix for the SSL certificate, default is certs/server-, see
+ also the HTTPS attribute.
+
+
styleData
data-storage used by dynamic styles like f18
@@ -4613,6 +4620,12 @@ FW_widgetOverride($$)
Siehe das global Attribut sslVersion.
+
+ sslCertPrefix
+ Setzt das Präfix der SSL-Zertifikate, die Voreinstellung ist
+ certs/server-, siehe auch das HTTP Attribut.
+
+
styleData
wird von dynamischen styles wie f18 werwendet
diff --git a/fhem/FHEM/98_telnet.pm b/fhem/FHEM/98_telnet.pm
index 3b4f0703b..20c3a75fd 100644
--- a/fhem/FHEM/98_telnet.pm
+++ b/fhem/FHEM/98_telnet.pm
@@ -20,9 +20,22 @@ telnet_Initialize($)
$hash->{AsyncOutputFn} = "telnet_Output";
$hash->{UndefFn} = "telnet_Undef";
$hash->{AttrFn} = "telnet_Attr";
- $hash->{AttrList} = "globalpassword password prompt allowedCommands ".
- "allowfrom SSL connectTimeout connectInterval ".
- "encoding:utf8,latin1 sslVersion";
+ no warnings 'qw';
+ my @attrList = qw(
+ SSL
+ allowedCommands
+ allowfrom
+ connectInterval
+ connectTimeout
+ encoding:utf8,latin1
+ globalpassword
+ password
+ prompt
+ sslCertPrefix
+ sslVersion
+ );
+ use warnings 'qw';
+ $hash->{AttrList} = join(" ", @attrList);
$hash->{ActivateInformFn} = "telnet_ActivateInform";
$hash->{CanAuthenticate} = 2;
@@ -514,6 +527,10 @@ telnet_ActivateInform($)
sslVersion
See the global attribute sslVersion.
+ sslCertPrefix
+ Set the prefix for the SSL certificate, default is certs/server-, see
+ also the SSL attribute.
+
@@ -656,6 +673,11 @@ telnet_ActivateInform($)
Siehe das global Attribut sslVersion.
+ sslCertPrefix
+ Setzt das Präfix der SSL-Zertifikate, die Voreinstellung ist
+ certs/server-, siehe auch das SSL Attribut.
+
+
diff --git a/fhem/FHEM/TcpServerUtils.pm b/fhem/FHEM/TcpServerUtils.pm
index 467335b2e..c03bfa352 100644
--- a/fhem/FHEM/TcpServerUtils.pm
+++ b/fhem/FHEM/TcpServerUtils.pm
@@ -111,12 +111,13 @@ TcpServer_Accept($$)
# Certs directory must be in the modpath, i.e. at the same level as the
# FHEM directory
my $mp = AttrVal("global", "modpath", ".");
+ my $certPrefix = AttrVal($name, "sslCertPrefix", "certs/server-");
my $ret;
eval {
$ret = IO::Socket::SSL->start_SSL($clientinfo[0], {
SSL_server => 1,
- SSL_key_file => "$mp/certs/server-key.pem",
- SSL_cert_file => "$mp/certs/server-cert.pem",
+ SSL_key_file => "$mp/${certPrefix}key.pem",
+ SSL_cert_file => "$mp/${certPrefix}cert.pem",
SSL_version => $sslVersion,
SSL_cipher_list => 'HIGH:!RC4:!eNULL:!aNULL',
Timeout => 4,