[ 
https://issues.apache.org/jira/browse/KNOX-3085?focusedWorklogId=953435&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-953435
 ]

ASF GitHub Bot logged work on KNOX-3085:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 21/Jan/25 20:29
            Start Date: 21/Jan/25 20:29
    Worklog Time Spent: 10m 
      Work Description: smolnar82 commented on code in PR #981:
URL: https://github.com/apache/knox/pull/981#discussion_r1923923518


##########
gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/KnoxMetadataResource.java:
##########
@@ -169,32 +164,31 @@ private Response 
generateFailureFileDownloadResponse(Status status, String error
     return responseBuilder.build();
   }
 
-  private Certificate getPublicCertificate(GatewayServices gatewayServices, 
GatewayConfig config) {
+  private Certificate[] getPublicCertificates() {
     try {
-      final KeystoreService keystoreService = 
gatewayServices.getService(ServiceType.KEYSTORE_SERVICE);
-      return 
keystoreService.getKeystoreForGateway().getCertificate(config.getIdentityKeyAlias());
-    } catch (KeyStoreException | KeystoreServiceException e) {
+      return 
X509CertificateUtil.fetchPublicCertsFromServer(request.getRequestURL().toString(),
 true, null);

Review Comment:
   @pzampino - I didn't find this utility method 
(`X509CertificateUtil.fetchPublicCertsFromServer`) on the master branch. I 
assume this was accidentally left out of the commit.
   I recall I implemented something similar in KnoxShell 
[here](https://github.com/apache/knox/blob/master/gateway-shell/src/main/java/org/apache/knox/gateway/shell/KnoxSh.java#L208-L231).





Issue Time Tracking
-------------------

    Worklog Id:     (was: 953435)
    Time Spent: 40m  (was: 0.5h)

> Metadata API should return the certificate chain (if any) instead of only the 
> configured Knox instance certificate
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: KNOX-3085
>                 URL: https://issues.apache.org/jira/browse/KNOX-3085
>             Project: Apache Knox
>          Issue Type: Improvement
>          Components: Server
>    Affects Versions: 2.1.0
>            Reporter: Philip Zampino
>            Assignee: Philip Zampino
>            Priority: Major
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> Currently if you hit the Knox metadata API, it will return the 
> locally-configured Knox certificate. This works great if there is nothing 
> between the client and Knox. When a LB is in the middle, the returned 
> certificate is incorrect. The certificate that should be returned is one for 
> the endpoint that is accessed. This means we should try to return the LB 
> certificate if there is a LB.
> Since we know what URL was accessed to hit the metadata API, Knox itself 
> should be able to grab the certificate chain for that host:port and return 
> the PEM and JKS version of it. This will require basically doing an `openssl 
> s_client -connect host:port` from Java and converting into the correct 
> format. Conveniently, the Knox CLI has something like this today that 
> downloads the Knox certificate. We should be able to reuse the same logic in 
> the metadata API and return the correct certificate information.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to