У меня проблема с подключением принтера в 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 будет содержать многочисленные строки с сообщениями о невозможности прочитать файл сертификата.