CUPS-Freigabedrucker mit Authentifizierungs- und SSL-Verbindungsproblem auf Windows-Rechnern

CUPS-Freigabedrucker mit Authentifizierungs- und SSL-Verbindungsproblem auf Windows-Rechnern

Ich habe ein Problem mit dem Verbinden eines Druckers in Windows 10 oder 7. In meinem Debian funktioniert alles prima, egal ob der grundlegende Authentifizierungstyp oder HTTPS. Ich habe den Benutzer cups_print erstellt und ihm mit dem Befehl passwd ein Passwort zugewiesen. Ich habe versucht, Authentifizierung und TLS/SSL zu deaktivieren, und ohne sie können Windows-Stationen eine Verbindung zu HP P1006 herstellen, das mit Raspi verbunden ist und auf dem CUPS läuft. Ich habe auch „Require valid-user“ ausprobiert, aber mit dieser Option kann ich mit beliebigen Anmeldeinformationen drucken, z. B. Benutzername: „aa“, Passwort: „randompassword“. Ich habe auch versucht, bei der SSL-Verbindung unter Windows erfolglos auf Port 631 zu lauschen, Linux funktioniert mit jeder Option einwandfrei.

Ich habe versucht, die IPP-URL in Windows auf folgende Weise einzurichten:
https://192.168.X.132:632/printers/HP_LaserJet_P1006
https://cups_print:[email geschützt]:632/Drucker/HP_LaserJet_P1006
https://[email geschützt]:632/Drucker/HP_LaserJet_P1006
http://[email geschützt]:631/Drucker/HP_LaserJet_P1006
http://192.168.X.132:631/printers/HP_LaserJet_P1006
http://cups_print:[email geschützt]:631/Drucker/HP_LaserJet_P1006

Außerdem habe ich versucht, einen Drucker hinzuzufügen, wenn cupsd.conf ohne erforderliche Authentifizierung konfiguriert ist, und ihn anschließend mit aktivierter Option neu zu starten. Anschließend habe ich Windows über die Portbearbeitung die Anmeldeinformationen übermittelt. Wieder ohne Erfolg. Ich kann auf jeder Windows-Station über die Weboberfläche auf die CUPS-Konfiguration zugreifen. Es scheint ein Problem mit Windows zu sein. Wenn nicht, können Sie bitte eine Lösung vorschlagen? Ich möchte alles in meinem Heimnetzwerk sichern.

Ich füge einen Teil meiner cupsd.conf-Datei bei

# 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  

Antwort1

Nachdem ich eine Woche lang mit diesem Problem gekämpft hatte, fand ich eine Problemumgehung.

Beim Windows 10 1903-Update gibt es ein Problem beim Hinzufügen eines Druckers mit Authentifizierung. Sie müssen zuerst den Port festlegen, noch bevor Sie den Drucker hinzufügen. Danach können Sie ihn problemlos hinzufügen. Ein nettes Skript, das Sie bearbeiten und ausführen können, finden Sie hier

Anweisungen zum Hinzufügen von Drucker-HTTPS und Authentifizierung

Skript ändert Register und fügt Port hinzu

Oder Sie können es manuell hinzufügen, indem Sie Register konfigurieren, siehe zweiter Link. Nachdem Sie Port und Drucker erfolgreich hinzugefügt haben (Sie sollten nicht nach Anmeldeinformationen gefragt werden), gehen Sie zu den Druckereinstellungen, Porteinstellungen und konfigurieren Sie den Port mit den bereitgestellten Anmeldeinformationen. Ohne diese können Sie nicht drucken.

Zweitens müssen Sie in cupsd.conf Zugriff auf jeden Standort ohne Authentifizierung gewähren, sogar auf "/" und "/printers". Erstellen Sie danach eine Richtlinienbeschränkung <Limit Get-Printer-Attributes>und verlangen Sie dort überhaupt keine Authentifizierung. Aktivieren Sie dann die Authentifizierung in <Limit Cancel-Job CUPS-Authenticate-Job>und <Limit Create-Job Print-Job Print-URI Validate-Job>.

Wenn Sie versuchen, ein selbst signiertes Zertifikat zu verwenden, folgen Sie dem Link Selbstsigniertes Zertifikat hinzufügen in Windows. Vergessen Sie nicht, dieses Zertifikat zu „Vertrauenswürdige Stammzertifikate von Drittanbietern“ hinzuzufügen.

Einige weitere Quellen mit Problemen, mit denen Sie konfrontiert werden, wenn Sie IPP-Drucker zu Windows hinzufügen Cups-Authentifizierungsproblem Windows Cups-Authentifizierungsproblem Windows

Meine cupsd.conf (anonymisiert)

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>

Antwort2

WARNUNG

Für die CUPS-Version 2.2.1 und höher wurden die in cupsd.conf verwendeten Anweisungen ServerCertificate und ServerKey zurückgezogen.

Sofern die Direktive CreateSelfSignedCerts in cups-files.conf nicht auf "no" gesetzt ist, generiert cups seine eigenen selbstsignierten Zertifikate mit den Namen ${HOSTNAME}.crt und ${HOSTNAME}.key

Der Standardpfad zu den Zertifikaten bleibt das Verzeichnis cups_root + ssl, kann aber mit der Direktive ServerKeyChain in cups-files.conf geändert werden.

Wenn Sie also über eigene Zertifikate (selbst signiert oder autoritativ signiert) verfügen, müssen Sie diese mit den Namen ${HOSTNAME}.crt und ${HOSTNAME}.key in das SSL-Verzeichnis kopieren. Andernfalls schlägt die https-Verbindung auf Port 631 fehl und die dortige Datei /var/log/cups/error.log enthält zahlreiche Zeilen, die darüber berichten, dass die Zertifikatsdatei nicht gelesen werden kann.

verwandte Informationen