Общий принтер CUPS с проблемой аутентификации и SSL-подключения на компьютерах Windows

Общий принтер CUPS с проблемой аутентификации и SSL-подключения на компьютерах Windows

У меня проблема с подключением принтера в Windows 10 или 7. В моем Debian все работает отлично, как с базовой аутентификацией, так и с HTTPS. Я создал пользователя cups_print и назначил ему пароль с помощью команды passwd. Я пробовал отключить аутентификацию и TLS/SSL, и без них станции Windows могут подключаться к HP P1006, который подключен к Raspi с запущенным CUPS. Я также пробовал Require valid-user, но с этой опцией я могу печатать с любыми учетными данными, например, имя пользователя: "aa", пароль: "randompassword". Я также пробовал прослушивать порт 631 при подключении SSL, но безуспешно в Windows, Linux отлично работает со всеми опциями.

Я пробовал настроить ipp url в Windows следующими способами:
https://192.168.X.132:632/printers/HP_LaserJet_P1006
https://cups_print:[email protected]:632/принтеры/HP_LaserJet_P1006
https://[email protected]:632/принтеры/HP_LaserJet_P1006
http://[email protected]:631/принтеры/HP_LaserJet_P1006
http://192.168.X.132:631/printers/HP_LaserJet_P1006
http://cups_print:[email protected]:631/принтеры/HP_LaserJet_P1006

Также я попытался добавить принтер, когда cupsd.conf настроен без необходимости аутентификации, и перезапустить его после этого с включенной опцией, затем предоставил учетные данные Windows через редактирование порта. Опять безуспешно. Я могу получить доступ к конфигурации cups на любой станции Windows через веб-интерфейс. Похоже, это проблема с Windows, если нет, не могли бы вы предложить какое-либо решение, я хотел бы, чтобы все было защищено в моей домашней сети.

Прилагаю часть моего файла cupsd.conf

# Show troubleshooting information in error_log.
LogLevel debug
PageLogFormat
MaxLogSize 0
Port 631
Listen localhost:631
Listen /run/cups/cups.sock
Listen 192.168.X.X:631
Browsing On
BrowseLocalProtocols dnssd
BrowseAllow All
DefaultAuthType Basic
WebInterface Yes
DefaultEncryption Required
SSLPort 632
SSLListen *:632
<Location />
  Order allow,deny
  Allow 192.168.X.*
  Allow 192.168.X.*
  Allow localhost
  #Allow all
  Require user cups_print
  #Require user @SYSTEM cups_print  
</Location>
<Location /printers>
  Order allow,deny
  Allow 192.168.X.*
  Allow 192.168.X.*
 Allow localhost
  #Allow all
  AuthType Basic
  Require user cups_print
  #Require user @SYSTEM cups_print  

решение1

После недели борьбы с этой проблемой я нашел обходной путь.

В обновлении Windows 10 1903 есть проблема с добавлением принтера с аутентификацией. Сначала нужно задать порт, даже перед добавлением принтера, после этого вы сможете добавить его без проблем. Хороший скрипт, который можно редактировать и запускать, здесь

Инструкции по добавлению https и аутентификации принтера

Скрипт, изменяющий регистры и добавляющий порт

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

Во-вторых, вам нужно предоставить доступ к каждому расположению без аутентификации, даже "/" и "/printers" в cupsd.conf. После этого создайте ограничение политики <Limit Get-Printer-Attributes>и не требуйте аутентификации там вообще. Затем включите аутентификацию в <Limit Cancel-Job CUPS-Authenticate-Job>и <Limit Create-Job Print-Job Print-URI Validate-Job>.

Если вы пытаетесь использовать самоподписанный сертификат, перейдите по ссылке Добавление самоподписанного сертификата в Windows. Не забудьте добавить этот сертификат в «Доверенные корневые сторонние сертификаты»

Еще несколько источников проблем, с которыми вам придется столкнуться при добавлении принтера IPP в Windows Проблема аутентификации Cups Windows Проблема аутентификации Cups Windows

Мой cupsd.conf (анонимный)

LogLevel debug
PageLogFormat
MaxLogSize 0

SSLPort 636
SSLListen *:636

Browsing On
BrowseLocalProtocols dnssd
BrowseAllow All

DefaultAuthType Basic

WebInterface yes


DefaultEncryption required

ServerKey /etc/cups/ssl/server.key
ServerCertificate /etc/cups/ssl/server.crt

ServerAlias hostname.my_domain.net


# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 192.168.X1.*
  Allow 192.168.X2.*
  Allow localhost 
</Location>

<Location /printers>
  Order allow,deny
  Allow 192.168.X1.*
  Allow 192.168.X2.*
  Allow localhost
</Location>


# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow localhost
  Deny all
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Allow localhost
  Order allow,deny
</Location>

# Restrict access to log files...
<Location /admin/log>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job/subscription privacy...
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default

  # Job-related operations must be done by the owner or an administrator...
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    Order deny,allow
    Allow all
    AuthType Basic
    Require user @SYSTEM cups_print
  </Limit>

  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@ cups_print
    AuthType Basic
    Order deny,allow
  </Limit>

  <Limit Get-Printer-Attributes>
    Order allow,deny
    Allow all
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

# Set the authenticated printer/job policies...
<Policy authenticated>
  # Job/subscription privacy...
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default

  # Job-related operations must be done by the owner or an administrator...
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    AuthType Basic
    Require user @SYSTEM cups_print
    Order deny,allow
  </Limit>

  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    AuthType Basic
    Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@ cups_print
    Order deny,allow
  </Limit>

  <Limit Get-Printer-Attributes>
    Order allow,deny
    Allow all
   </Limit>


  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

решение2

ПРЕДУПРЕЖДЕНИЕ

Для версии cups 2.2.1 и выше директивы ServerCertificate и ServerKey, используемые в cupsd.conf, были отозваны.

Если директива CreateSelfSignedCerts не установлена ​​в значение «no» в cups-files.conf, то cups генерирует собственные самоподписанные сертификаты, используя имена ${HOSTNAME}.crt и ${HOSTNAME}.key

Путь к сертификатам по умолчанию остается каталогом cups_root + ssl, но его можно изменить с помощью директивы ServerKeyChain в cups-files.conf.

Поэтому, если у вас есть собственные сертификаты (самоподписанные или подписанные уполномоченным органом), вы должны скопировать их в каталог ssl с именами ${HOSTNAME}.crt и ${HOSTNAME}.key, в противном случае https-соединение на порту 631 прервется, а файл /var/log/cups/error.log будет содержать многочисленные строки с сообщениями о невозможности прочитать файл сертификата.

Связанный контент