Impressora compartilhada CUPS com autenticação e problema de conexão SSL em máquinas Windows

Impressora compartilhada CUPS com autenticação e problema de conexão SSL em máquinas Windows

Tenho um problema ao conectar a impressora no Windows 10 ou 7. Tudo funciona muito bem no meu Debian, seja do tipo de autenticação básica ou HTTPS. Eu criei o usuário cups_print e atribuí a senha a ele com o comando passwd. Tentei desabilitar a autenticação e TLS/SSL e sem eles as estações Windows podem se conectar ao HP P1006, que está conectado ao Raspi com o CUPS em execução. Também tentei Exigir usuário válido, mas com esta opção posso imprimir com qualquer credencial, por exemplo, nome de usuário: "aa" senha: "senha aleatória". Também tentei escutar na porta 631 ao fazer conexão SSL sem sucesso no Windows, o Linux funciona bem com todas as opções.

Tentei configurar o URL ipp no ​​Windows das seguintes maneiras:
https://192.168.X.132:632/printers/HP_LaserJet_P1006
https://cups_print:[e-mail protegido]:632/impressoras/HP_LaserJet_P1006
https://[e-mail protegido]:632/impressoras/HP_LaserJet_P1006
http://[e-mail protegido]:631/impressoras/HP_LaserJet_P1006
http://192.168.X.132:631/printers/HP_LaserJet_P1006
http://cups_print:[e-mail protegido]:631/impressoras/HP_LaserJet_P1006

Também tentei adicionar impressora, quando o cupsd.conf está configurado sem necessidade de autenticação e reiniciá-lo posteriormente com a opção ativada, em seguida, forneci credenciais ao Windows via edição de porta. Novamente sem sucesso. Consigo acessar a configuração do cups em qualquer estação Windows via interface web. Parece ser um problema com o Windows, caso contrário, você pode sugerir alguma solução, gostaria de ter tudo protegido na minha rede doméstica.

Incluo parte do meu arquivo 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  

Responder1

Depois de uma semana lutando com esse problema, encontrei uma solução alternativa.

Na atualização do Windows 10 1903, há um problema ao adicionar impressora com autenticação. Você tem que definir a porta primeiro, antes mesmo de adicionar a impressora, depois disso você poderá adicioná-la sem problemas. Um belo script que você pode editar e executar está aqui

Instruções para adicionar https e autenticação da impressora

Script modificando registros e adicionando porta

Ou você pode adicioná-lo manualmente configurando registros, veja o segundo link. Depois de adicionar com sucesso a porta e a impressora (nada deve solicitar credenciais), vá para configuração da impressora, configuração da porta e configure a porta com a credencial fornecida. Sem eles, você não consegue imprimir.

Em segundo lugar, você deve conceder acesso a todos os locais sem autenticação, até mesmo "/" e "/printers" em cupsd.conf. Depois disso, crie um limite de política <Limit Get-Printer-Attributes>e não exija nenhuma autenticação. Em seguida, habilite a autenticação em <Limit Cancel-Job CUPS-Authenticate-Job>e <Limit Create-Job Print-Job Print-URI Validate-Job>.

Se você estiver tentando usar um certificado autoassinado, siga o link Adição de certificado autoassinado no Windows. Não se esqueça de adicionar este certificado a "Certificados de terceiros raiz confiáveis"

Mais algumas fontes com problemas que você terá que enfrentar ao adicionar uma impressora IPP ao Windows Problema de autenticação do Cups Windows Problema de autenticação do Cups Windows

Meu cupsd.conf (anonimizado)

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>

Responder2

AVISO

Para a versão cups 2.2.1 e superior, as diretivas ServerCertificate e ServerKey usadas em cupsd.conf foram retiradas.

A menos que a diretiva CreateSelfSignedCerts esteja definida como "no" em cups-files.conf, o cups gera seus próprios certificados autoassinados usando os nomes ${HOSTNAME}.crt e ${HOSTNAME}.key

O caminho padrão para os certificados continua sendo o diretório cups_root + ssl, mas isso pode ser alterado usando a diretiva ServerKeyChain em cups-files.conf.

Portanto, se você tiver seus próprios certificados (autoassinados ou assinados com autoridade), deverá copiá-los para o diretório SSL com os nomes ${HOSTNAME}.crt e ${HOSTNAME}.key, caso contrário a conexão https na porta 631 falhará e o lá /var/log/cups/error.log contém inúmeras linhas reclamando de não conseguir ler o arquivo de certificado.

informação relacionada