Looks fine to me. For CSR, since there is already a "Note" there for these 2 options, you can add a few words about what -keystore and -trustcacerts can do.
Thanks, Max > On Jun 8, 2020, at 4:01 AM, Hai-May Chao <[email protected]> wrote: > > Updated webrev - > > https://cr.openjdk.java.net/~hchao/8244148/webrev.02/ > > Thanks, > Hai-May > > >> On Jun 5, 2020, at 11:04 PM, Weijun Wang <[email protected]> wrote: >> >> I still think duplicated commands in TrustedCert.java are useless. Line 104 >> and line 133 are exactly the same, line 109 and line 138 are exactly the >> same, and you haven't made any change to these 2 files in between. >> >> Same for line 80 and line 96 of TrustedCRL.java. >> >> Everything else is fine. >> >> Thanks, >> Max >> >> >>> On Jun 6, 2020, at 2:25 AM, Hai-May Chao <[email protected]> wrote: >>> >>> Updated webrev - >>> >>> https://cr.openjdk.java.net/~hchao/8244148/webrev.01/ >>> >>> Added one command line -importcert in TrustCert.java. >>> Added createCacerts() in test/lib SecurityTools.java. >>> >>> Thanks, >>> Hai-May >>> >>> >>> >>>> On Jun 4, 2020, at 5:57 AM, Weijun Wang <[email protected]> wrote: >>>> >>>> >>>> >>>>> On Jun 4, 2020, at 7:29 PM, Hai-May Chao <[email protected]> wrote: >>>>> >>>>> Hi Max, >>>>> >>>>>> On Jun 3, 2020, at 12:59 AM, Weijun Wang <[email protected]> wrote: >>>>>> >>>>>> The source change looks fine to me. >>>>>> >>>>>> In TrustedCert.java: >>>>>> >>>>>> - You can use FileOutputStream and Files.copy(Path,OutputStream) in >>>>>> cat(). >>>>> >>>>> This cat() is taken from WealAlg.java. >>>>> >>>>>> >>>>>> - There is no need to recreate root.jks and root.pem. >>>>> >>>>> The sequences of the commands used in this test scenario allows me to >>>>> test -printcert for the -trustcacerts and -keytsore options. We had >>>>> discussion offline about it. The test uses trusted certificates and >>>>> checks no warnings on the weak algorithms to address the requirement >>>>> described in the bug. I believe it does serve that purpose, and looks >>>>> legitimate to me. There could be different ways of testing a >>>>> functionality, and please let me know if there is a problem with the >>>>> current approach. >>>> >>>> I just meant that the keytool commands generating root.jks and root.pem >>>> are exactly the same and there is no need to recreate it. >>>> >>>>> >>>>> Please also elaborate your comment about no need to recreate root.jks and >>>>> root.pem. >>>>> >>>>>> >>>>>> - Why not use -trustcacerts below? >>>>>> >>>>>> 160 kt("-importcert -file server.pem -noprompt", "server.jks”); >>>>> >>>>> >>>>> Because here is to import the server (end-entity) cert, and it will not >>>>> make a difference for the test result whether to use the -trustcacerts or >>>>> not. It’s the ca (intermediate) cert needs to have it in this test >>>>> scenario. I intended to leave it out in #160 to distinguish between >>>>> server and ca certs. >>>> >>>> OK. >>>> >>>> Then how about we add a new command before line 155? >>>> >>>> kt("-importcert -file ca.pem", "ca.jks").shouldNotHaveExitValue(0); >>>> >>>> This would prove the "-trustcacerts" on line 155 is really useful. >>>> >>>>> >>>>>> >>>>>> - It's probably better to add a " " between cmd and options in >>>>>> patchcmd(). Same in TrustedCRL.java. >>>>> >>>>> Ok, will change it. >>>>> >>>>>> >>>>>> In TrustedCRL.java: >>>>>> >>>>>> - No need to recreate ks and ca.crl. Just call "-printcrl" with >>>>>> different options. >>>>> >>>>> Same reply as above. >>>> >>>> Same question as above. >>>> >>>>> >>>>>> >>>>>> - Why create using MD5withRSA? Do you meant to warn about the weak >>>>>> algorithm? >>>>> >>>>> Yes, exactly, and it differentiates from the weak algorithm SHA1withRSA >>>>> used in root CA where no warning will be emitted. There is another >>>>> -gencrl in #119 without using MD5withRSA so I’d have two test cases. >>>>> >>>>>> >>>>>> Also I would suggest you create a dedicate method (maybe in >>>>>> SecurityTools.java) to create your own cacerts. There is no need to copy >>>>>> over the system cacerts, just make sure the file is created with the JKS >>>>>> storetype. We are thinking of upgrading the storetype of cacerts and >>>>>> it's nice to do this at a single place so we can modify it easily later. >>>>> >>>>> I created a method in SecurityTools.java to create the own cacerts. With >>>>> this keystore, the subsequent importing a certificate reply would not >>>>> work. It turns out that its caks.size() is zero detected at >>>>> establishCertChain() in keytool/Main.java after root cert has been >>>>> imported to that cacerts. At this point I’d like to suggest a separate >>>>> bug be filed to cover the cacerts enhancement that you suggested. >>>> >>>> I meant creating the cacerts in one method, something like >>>> >>>> void createCacerts(String ks, String... crt); >>>> >>>> and you can call createCacerts("mycacerts", "root.crt") to create it. The >>>> method can call KeyStore APIs and not keytool commands. >>>> >>>> BTW, what does caks.size() == 0 matter here? >>>> >>>> Thanks, >>>> Max >>>> >>>> >>>>> >>>>> Thanks, >>>>> Hai-May >>>>> >>>>> >>>>>> Thanks, >>>>>> Max >>>>>> >>>>>> >>>>>>> On Jun 2, 2020, at 2:37 AM, Hai-May Chao <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I’d like to request a review for: >>>>>>> >>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8244148 >>>>>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8246269 >>>>>>> Webrev: http://cr.openjdk.java.net/~hchao/8244148/webrev.00/ >>>>>>> >>>>>>> The change is to add the support of -trustcacerts and -keystore options >>>>>>> to -printcert and -princrl command for keytool. This enables keytool to >>>>>>> use the trusted certificates when verifying untrusted artifacts that >>>>>>> are signed by CAs. It also incorporates Max’s change that consolidates >>>>>>> the code to get the default location of cacerts keystore. >>>>>>> >>>>>>> Thanks, >>>>>>> Hai-May >>> >> >
