diff --git a/res/dist/wix/Product.wxs b/res/dist/wix/Product.wxs index 7e567c2a5..ac51ef3fc 100644 --- a/res/dist/wix/Product.wxs +++ b/res/dist/wix/Product.wxs @@ -146,8 +146,8 @@ - - + + diff --git a/res/openssl/deskflow.conf b/res/openssl/deskflow.conf deleted file mode 100644 index c94260272..000000000 --- a/res/openssl/deskflow.conf +++ /dev/null @@ -1,65 +0,0 @@ -# -# Deskflow OpenSSL configuration file. -# Used for generation of certificate requests. -# - -dir = . - -[ca] -default_ca = CA_default - -[CA_default] -serial = $dir/serial -database = $dir/certindex.txt -new_certs_dir = $dir/certs -certificate = $dir/cacert.pem -private_key = $dir/private/cakey.pem -default_days = 365 -default_md = sha256 -preserve = no -email_in_dn = no -nameopt = default_ca -certopt = default_ca -policy = policy_match - -[policy_match] -countryName = match -stateOrProvinceName = match -organizationName = match -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -[req] -default_bits = 1024 # Size of keys -default_keyfile = key.pem # name of generated keys -default_md = sha256 # message digest algorithm -string_mask = nombstr # permitted characters -distinguished_name = req_distinguished_name -req_extensions = v3_req - -[req_distinguished_name] -0.organizationName = Organization Name (company) -organizationalUnitName = Organizational Unit Name (department, division) -emailAddress = Email Address -emailAddress_max = 40 -localityName = Locality Name (city, district) -stateOrProvinceName = State or Province Name (full name) -countryName = Country Name (2 letter code) -countryName_min = 2 -countryName_max = 2 -commonName = Common Name (hostname, IP, or your name) -commonName_max = 64 -0.organizationName_default = My Company -localityName_default = My Town -stateOrProvinceName_default = State or Providence -countryName_default = US - -[v3_ca] -basicConstraints = CA:TRUE -subjectKeyIdentifier = hash -authorityKeyIdentifier = keyid:always,issuer:always - -[v3_req] -basicConstraints = CA:FALSE -subjectKeyIdentifier = hash diff --git a/src/lib/gui/dialogs/SettingsDialog.cpp b/src/lib/gui/dialogs/SettingsDialog.cpp index 248e271ca..6cf719692 100644 --- a/src/lib/gui/dialogs/SettingsDialog.cpp +++ b/src/lib/gui/dialogs/SettingsDialog.cpp @@ -138,11 +138,6 @@ void SettingsDialog::on_m_pPushButtonTlsCertPath_clicked() { qDebug("no tls certificate file at: %s", qUtf8Printable(fileName)); } } - updateTlsRegenerateButton(); -} - -void SettingsDialog::on_m_pComboBoxTlsKeyLength_currentIndexChanged(int) { - updateTlsRegenerateButton(); } void SettingsDialog::on_m_pPushButtonTlsRegenCert_clicked() { @@ -277,18 +272,6 @@ bool SettingsDialog::isClientMode() const { return m_coreProcess.mode() == deskflow::gui::CoreProcess::Mode::Client; } -void SettingsDialog::updateTlsRegenerateButton() { - const auto writable = m_appConfig.isActiveScopeWritable(); - const auto keyLength = m_pComboBoxTlsKeyLength->currentText().toInt(); - const auto path = m_pLineEditTlsCertPath->text(); - const auto keyChanged = m_appConfig.tlsKeyLength() != keyLength; - const auto pathChanged = m_appConfig.tlsCertPath() != path; - const auto tlsEnabled = m_pCheckBoxEnableTls->isChecked(); - - m_pPushButtonTlsRegenCert->setEnabled( - writable && tlsEnabled && (keyChanged || pathChanged)); -} - void SettingsDialog::updateKeyLengthOnFile(const QString &path) { TlsCertificate ssl; if (!QFile(path).exists()) { @@ -337,7 +320,5 @@ void SettingsDialog::updateControls() { m_pLineEditLogFilename->setEnabled(writable && logToFile); m_pButtonBrowseLog->setEnabled(writable && logToFile); - updateTlsControlsEnabled(); - updateTlsRegenerateButton(); updateTlsControls(); } diff --git a/src/lib/gui/dialogs/SettingsDialog.h b/src/lib/gui/dialogs/SettingsDialog.h index 45979b487..ee685f04e 100644 --- a/src/lib/gui/dialogs/SettingsDialog.h +++ b/src/lib/gui/dialogs/SettingsDialog.h @@ -53,7 +53,6 @@ private slots: void on_m_pButtonBrowseLog_clicked(); void on_m_pRadioSystemScope_toggled(bool checked); void on_m_pPushButtonTlsCertPath_clicked(); - void on_m_pComboBoxTlsKeyLength_currentIndexChanged(int index); void on_m_pPushButtonTlsRegenCert_clicked(); void on_m_pCheckBoxServiceEnabled_toggled(bool checked); diff --git a/src/lib/gui/tls/TlsCertificate.cpp b/src/lib/gui/tls/TlsCertificate.cpp index 676add1eb..77d5625ef 100644 --- a/src/lib/gui/tls/TlsCertificate.cpp +++ b/src/lib/gui/tls/TlsCertificate.cpp @@ -18,7 +18,6 @@ #include "TlsCertificate.h" #include "TlsFingerprint.h" -#include "gui/paths.h" #include #include @@ -32,13 +31,11 @@ static const char *const kCertificateSubjectInfo = "/CN=Deskflow"; #if defined(Q_OS_WIN) static const char *const kWinOpenSslDir = "OpenSSL"; static const char *const kWinOpenSslBinary = "openssl.exe"; -static const char *const kConfigFile = "deskflow.conf"; +static const char *const kConfigFile = "openssl.cnf"; #elif defined(Q_OS_UNIX) static const char *const kUnixOpenSslCommand = "openssl"; #endif -using namespace deskflow::gui; - #if defined(Q_OS_WIN) namespace deskflow::gui { @@ -90,61 +87,43 @@ using namespace deskflow::gui; TlsCertificate::TlsCertificate(QObject *parent) : QObject(parent) {} bool TlsCertificate::runTool(const QStringList &args) { - QString program; #if defined(Q_OS_WIN) - program = openSslWindowsBinary(); + const auto program = openSslWindowsBinary(); #else - program = kUnixOpenSslCommand; + const auto program = kUnixOpenSslCommand; #endif QStringList environment; #if defined(Q_OS_WIN) - auto openSslDir = QDir(openSslWindowsDir()); - auto config = QDir::cleanPath(openSslDir.filePath(kConfigFile)); - if (!QFile::exists(config)) { - qDebug("openssl config file not found: %s", qUtf8Printable(config)); - - // if the expected production file location doesn't exist, try the dev path. - config = QDir::cleanPath(QString("res/openssl/%1").arg(kConfigFile)); - - // if it still isn't there, then there's something seriously wrong. - if (!QFile::exists(config)) { - qFatal() << "openssl config file not found: " << config; - } - } - + const auto openSslDir = QDir(openSslWindowsDir()); + const auto config = QDir::cleanPath(openSslDir.filePath(kConfigFile)); environment << QString("OPENSSL_CONF=%1").arg(config); #endif + QProcess process; + process.setEnvironment(environment); + for (const auto &envVar : environment) { + qDebug("set env var: %s", qUtf8Printable(envVar)); + } + qDebug( "running: %s %s", qUtf8Printable(program), qUtf8Printable(args.join(" "))); - - QProcess process; - - for (const auto &envVar : environment) { - qDebug("setting env var %s", qUtf8Printable(envVar)); - } - - process.setEnvironment(environment); - process.start(program, args); - bool success = process.waitForStarted(); - QString stderrOutput; + QString toolStderr; if (success && process.waitForFinished()) { m_toolStdout = process.readAllStandardOutput().trimmed(); - stderrOutput = process.readAllStandardError().trimmed(); + toolStderr = process.readAllStandardError().trimmed(); } if (int code = process.exitCode(); !success || code != 0) { - qDebug( - "openssl failed with code %d: %s", code, qUtf8Printable(stderrOutput)); + qDebug("openssl failed with code %d: %s", code, qUtf8Printable(toolStderr)); qCritical( - "failed to generate TLS certificate:\n\n%s", - qUtf8Printable(stderrOutput)); + "failed to generate tls certificate:\n\n%s", + qUtf8Printable(toolStderr)); return false; }