Подавить "localhost хочет получить доступ к подключенным принтерам Ненадежный веб-сайт" при доступе к принтерам - QZ-tray

Как правильно подавить

localhost хочет получить доступ к подключенным принтерам Ненадежный веб-сайт

модальный при доступе к принтерам?

Я пытался создать сертификат с помощью этой команды OpenSSL:

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout server.key -out server.crt

Затем добавьте переопределение так:

authcert.override=server.crt

в qz-tray.properties файл.

Однако это все то же самое, диалоговое окно не подавляется. Что может быть не так?

Это полный файл свойств сертификата:

authcert.override=C:\\Program Files\\QZ Tray\\auth\\server.crt
wss.alias=qz-tray
wss.keypass=keypass
wss.storepass=storepass
wss.host=0.0.0.0

1 ответ

Решение

qz-tray.properties переопределение будет введено с версией 2.0.2 и во время написания этого, 2.0.1 это последняя стабильная версия.

Возможные варианты:

  • Ждать 2.0.2 / скомпилировать из источника и использовать qz-tray.properties переопределить значение

    • -- ИЛИ ЖЕ --
  • Ждать 2.0.2 / компилировать из исходного кода, но предоставить сертификат во время упаковки, что позволит override.crt распространяться напрямую с установщиком.

    ant nsis -Dauthcert.use=override.crt
    
    • -- ИЛИ ЖЕ --
  • использование 2.0.1 и запустите программное обеспечение с переопределением сертификата через командную строку. например:

    java -DtrustedRootCert=override.crt -jar qz-tray.jar
    

Поскольку последний вариант требует модификации средства запуска рабочего стола QZ Tray, это в конечном итоге приведет к неочевидным проблемам при включенном автозапуске (например, автозапуск в Windows запускается программой qz-tray.exe, которая запускается без -DtrustedRootCert параметр).

Вот почему 2.0.2 особенность предоставления сертификата постоянно в qz-tray.properties гораздо предпочтительнее. Обратите внимание, что сборка последней версии QZ Tray - это несколько быстрых шагов.

Но это только половина дела. Для подавления предупреждений безопасности каждое сообщение должно иметь цифровую подпись. Это где server.key вступает в игру. Мы называем это private-key.pem в наших примерах.

Подписание обычно выполняется на стороне сервера, хотя может выполняться на стороне клиента с риском утечки ключа. Этот процесс лучше всего объясняется в вики-сообщениях со знаками.

Подписание сообщений

Пример подписи PHP:

<? // sign-message.php

$KEY = 'private-key.pem'; // or 'server.key', etc
$req = $_GET['request'];  // i.e. 'toSign' from JS
$privateKey = openssl_get_privatekey(file_get_contents($KEY));
$signature = null;
openssl_sign($req, $signature, $privateKey);
if ($signature) {
    header("Content-type: text/plain");
    echo base64_encode($signature);
    exit(0);
}
echo '<h1>Error signing message</h1>';
exit(1);

?>

JavaScript:

qz.security.setSignaturePromise(function(toSign) {
    return function(resolve, reject) {
       $.ajax("/foo/bar/sign-message.php?request=" + toSign).then(resolve, reject);
    };
});

qz.security.setCertificatePromise(function(resolve, reject) {
    $.ajax("/foo/bar/digital-certificate.txt").then(resolve, reject); // or `server.crt`, etc
});

Примечание. Во избежание утечки ключа закрытый ключ всегда должен храниться в каталоге, недоступном для веб-браузера.

Просто подавить предупреждение

Если вы используете QZ Tray на изолированной машине (как в моем случае), в локальной среде или по какой-либо причине вам не нужно шифровать сообщения и вы просто хотите избавиться от предупреждающего сообщения, вы можете отключить сам диалог предупреждения.

Отказ от ответственности: этот метод не предполагается использовать в производстве, сообщения не будут зашифрованы, используйте на свой страх и риск.

  1. Клонируйте репозиторий QZ Tray ( https://github.com/qzind/tray.git).
  2. Выполните зависимости компиляции: Ant, Java, NSIS (Windows). Если вы используете Windows, я рекомендую использовать Chocolatey, с Chocolatey установить эти зависимости просто.
  3. Получить редактор кода или IDE (я использовал выпуск сообщества IntelliJ Idea).
  4. Навигация и редактирование /src/qz/ws/PrintSocketClient.java изменить линию 476

    Из этого:

    if (cert.isTrusted() && cert.isSaved()) {
    

    в

    if (cert.isSaved()) {
    
  5. Навигация и редактирование /src/qz/ui/GatewayDialog.java изменить линию 92

    От

    allowButton.setEnabled(persistentCheckBox.isSelected());
    

    в

    allowButton.setEnabled(true);
    
  6. Компиляция с использованием:

    • ant nsis для окон
    • ant pkgbuild для MacOS
    • ant makeself для Linux

    На самом деле это не только компилирует, но и создает установщик. Команда QZ отлично поработала, автоматизировав все.

  7. Установите лоток QZ с помощью только что созданного установщика.

  8. В первый раз вы увидите предупреждение, но теперь вы можете Remember решение Allow навсегда.

Я предлагаю платить премиум поддержку, если вам нужна действительно безопасная настройка.

Другие вопросы по тегам