[
https://issues.apache.org/jira/browse/KNOX-3085?focusedWorklogId=953350&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-953350
]
ASF GitHub Bot logged work on KNOX-3085:
----------------------------------------
Author: ASF GitHub Bot
Created on: 21/Jan/25 15:23
Start Date: 21/Jan/25 15:23
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 left of the commit.
I recall I implemented something similar to 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: 953350)
Time Spent: 20m (was: 10m)
> 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: 20m
> 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)