Hi Indunil Created the repo, please check.
On Wed, Feb 14, 2018 at 2:01 PM, Indunil Upeksha Rathnayake < indu...@wso2.com> wrote: > Hi Maheshika, > > Please use following as the parent group ID. > org.wso2.carbon.extension.identity.x509certificate.revocation > > Thanks and Regards > > On Wed, Feb 14, 2018 at 1:46 PM, Maheshika Goonetilleke < > mahesh...@wso2.com> wrote: > >> Hi Indunil >> >> Please provide the maven group id for this repo. >> >> On Wed, Feb 14, 2018 at 1:11 PM, Afkham Azeez <az...@wso2.com> wrote: >> >>> Approved >>> >>> On Feb 12, 2018 10:26 AM, "Indunil Upeksha Rathnayake" <indu...@wso2.com> >>> wrote: >>> >>> Hi Maheshika, >>> >>> Can you please create a new git repository with the name " >>> identity-x509-revocation" under wso2-extensions, for moving this >>> feature implementation. >>> >>> Thanks and Regards >>> >>> On Wed, Jan 17, 2018 at 11:20 AM, Indunil Upeksha Rathnayake < >>> indu...@wso2.com> wrote: >>> >>>> Hi, >>>> >>>> Please find the following considerations on proceeding with the >>>> CRL/OCSP certificate validation. Appreciate your ideas and comments on >>>> this. >>>> >>>> *Store root CA and intermediate CA certificates in registry* >>>> >>>> - As per the current implementation, trust stores which are having >>>> CA certificates that should be used for CRL and OCSP validation, can be >>>> configured file based as follows. >>>> >>>> <?xml version="1.0" encoding="ISO-8859-1"?> >>>> >>>> <CertificateValidation xmlns="http://wso2.org/project >>>> s/carbon/certificate-validation.xml >>>> <http://wso2.org/projects/carbon/certificate-validation.xml>"> >>>> >>>> ……. >>>> >>>> <TrustStores> >>>> >>>> *<TrustStore truststoreFile="/path/to/truststore.jks" >>>> truststorePass="cacertspassword" type="JKS"/>* >>>> >>>> </TrustStores> >>>> >>>> </CertificateValidation> >>>> >>>> >>>> - In server start up and in tenant initial activation, all the >>>> certificates in the trust stores will added to the registry. >>>> >>>> Registry path : >>>> *repository/security/certificate/certificate-authorities/<Normalized >>>> Issuer DN>/<Certificate Serial Num>* >>>> >>>> Normalized Issuer DN : UTF-8 URL encoded issuer DN while replacing the >>>> "%" with ":" in the URL encoded value, in order to support the Illegal >>>> characters for registry resource path (Check mail in [1]). >>>> Certificate Serial Num : Positive integer assigned by the CA to each >>>> certificate which is unique for each certificate issued by a given CA >>>> (i.e., the issuer name and serial number identify a unique certificate) >>>> >>>> Registry Content : *X509Certificate CA Certificate* >>>> Registry Properties : >>>> *crl - comma separated CRL URLs* >>>> *ocsp - comma separated OCSP URLs* >>>> >>>> - There can be certificates of Intermediate CAs and root CAs in the >>>> trust store (An intermediate CA is an entity that can sign certificates >>>> on >>>> behalf of the root CA. The root CA signs the intermediate certificate, >>>> forming a chain of trust). All those intermediate and root certificates >>>> will be added into the registry considering following scenarios. >>>> >>>> >>>> 1. Intermediate CAs have their own CRL and OCSP URLs >>>> >>>> Revocation of certificate is not propagated across the CA tree. Each CA >>>> (root and intermediate) is responsible of the publication of the CRL >>>> containing the list of only the revoked certificates that were issued by >>>> that CA and OCSP response for only the certificates that were issued by >>>> that CA. >>>> >>>> 2. Observer intermediate CA certificates in the >>>> chain of trust >>>> For full-chain CRL/OCSP validation as mention in below, need to have >>>> access to intermediate CA certificates in the chain of trust to retrieve >>>> the CRL and OCSP Urls >>>> >>>> >>>> *Need of CA and intermediate CA Certificates for CRL/OCSP validation* >>>> >>>> - CRL Validation : >>>> - If the CA certificate available in the registry which issued >>>> the client certificate, retrieve the CRL URLs from the CA cert. If >>>> not use >>>> the URLs in the client certificate. >>>> - In order to validate intermediate CAs when Full-chain CRL/OCSP >>>> validation enabled, CRL URls will be extracted from corresponding >>>> root CA. >>>> >>>> >>>> - OCSP Validation : >>>> - For OCSP validation, CA certificate which issued the client >>>> certificate should be available in the registry. Otherwise consider >>>> as a >>>> unsuccessful validation. >>>> - In order to validate intermediate CAs when Full-chain CRL/OCSP >>>> validation enabled, OCSP URLs will be extracted from corresponding >>>> root CA. >>>> >>>> >>>> >>>> *Configure Full-chain CRL/OCSP Validation * >>>> >>>> <?xml version="1.0" encoding="ISO-8859-1"?> >>>> >>>> <CertificateValidation xmlns="http://wso2.org/project >>>> s/carbon/certificate-validation.xml"> >>>> >>>> <Validators> >>>> >>>> <Validator name="org.wso2.carbon.identity. >>>> x509Certificate.validation.validator.CRLValidator" >>>> displayName="CRLValidator" enable="false"> >>>> >>>> <Parameter name="priority">1</Parameter> >>>> >>>> *<Parameter name="fullChainValidation">true</Parameter>* >>>> >>>> >>>> </Validator> >>>> >>>> <Validator name="org.wso2.carbon.identity. >>>> x509Certificate.validation.validator.OCSPValidator" >>>> displayName="OCSPValidator" enable="true"> >>>> >>>> <Parameter name="priority">2</Parameter> >>>> >>>> <Parameter name="fullChainValidation">true</Parameter> >>>> >>>> </Validator> >>>> >>>> </Validators> >>>> >>>> </CertificateValidation> >>>> >>>> - *Full-chain CRL/OCSP validation disabled:* validate the client >>>> certificate with the CRL/OCSP URLs of the issuer CA >>>> >>>> >>>> - *Full-chain CRL/OCSP validation enabled*: validate with the >>>> CRL/OCSP of every intermediate certificate within the chain of trust for >>>> the client, except for the root CA certificate. >>>> >>>> Ex: Root CA (root CA CRL) Cert ==> Intermediate CA Cert(inter CA CRL) >>>> ==> Client Cert >>>> The intermediate CA CRL is used to verify whether the client >>>> certificate is valid. The root CA CRL is used to verify whether >>>> Intermediate CA Cert is valid. >>>> >>>> If Full-chain CRL/OCSP checking enabled, If the intermediate >>>> certificates are not available in the registry or, if a CRL is not >>>> available in any of the intermediate CA in the chain of trust, or the >>>> certificate is listed as revoked in any of those CRLs, the client request >>>> is denied. >>>> >>>> >>>> *Validate when both CRL and OCSP methods are enabled* >>>> If the highest priority method returns a successful validation or >>>> status is not "Unknown", the second method is not attempted. Method with >>>> second and further priority is used as a backup. >>>> >>>> >>>> *Validate when multiple CA certificates * >>>> If there are CA certs more than one with same subject DN matches to >>>> issuer DN in client certificate, will be validating through one >>>> certificate. If validation is not successful or status is "Unknown", check >>>> with the CRL/OCSP URLs in the other CA certificate. >>>> >>>> >>>> *Validate when multiple CRL/OCSP URLs in a CA certificate/client >>>> certificate* >>>> Check with one URL and if only the validation is not successful or >>>> status is "Unknown", check with the other CRL/OCSP URLs in the certificate. >>>> >>>> >>>> *Number of Retries* >>>> Configure the maximum number of times which we can attempt to download >>>> the CRL file or get OCSP response from the specified path before giving up. >>>> >>>> <?xml version="1.0" encoding="ISO-8859-1"?> >>>> >>>> <CertificateValidation xmlns="http://wso2.org/project >>>> s/carbon/certificate-validation.xml"> >>>> >>>> <Validators> >>>> >>>> <Validator name="org.wso2.carbon.identity. >>>> x509Certificate.validation.validator.CRLValidator" >>>> displayName="CRLValidator" enable="true"> >>>> <Parameter name="priority">1</Parameter> >>>> >>>> *<Parameter name="retryCount">2</Parameter>* >>>> >>>> >>>> </Validator> >>>> >>>> </Validators> >>>> >>>> </CertificateValidation> >>>> >>>> >>>> >>>> [1] Mail Thread : "[Dev] Illegal Characters for Registry Resource Path" >>>> >>>> Thanks and Regards >>>> >>>> >>>> On Wed, Jan 10, 2018 at 12:41 PM, Indunil Upeksha Rathnayake < >>>> indu...@wso2.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> >>>>> On Wed, Jan 10, 2018 at 12:24 PM, Indunil Upeksha Rathnayake < >>>>> indu...@wso2.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> On Wed, Jan 3, 2018 at 6:05 PM, Asela Pathberiya <as...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Dec 15, 2017 at 10:11 AM, Darshana Gunawardana < >>>>>>> darsh...@wso2.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Dec 15, 2017 at 9:02 AM, Indunil Upeksha Rathnayake < >>>>>>>> indu...@wso2.com> wrote: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> At the time, a certificate is issued by a Certificate Authority >>>>>>>>> (CA), it is expected to be in use for its entire validity period. >>>>>>>>> However, >>>>>>>>> various circumstances may cause a certificate to become invalid, >>>>>>>>> prior to >>>>>>>>> the expiration of the validity period (Ex: compromise or suspected >>>>>>>>> compromise of the corresponding private key). Under such >>>>>>>>> circumstances, the >>>>>>>>> issuing CA needs to revoke the certificate before their scheduled >>>>>>>>> expiration date and should no longer be trusted. >>>>>>>>> >>>>>>>>> CRL(Certificate Revocation List) and OCSP (Online Certificate >>>>>>>>> Status Protocol) are two protocols used to check whether a given X509 >>>>>>>>> Certificate is revoked by its Issuer. >>>>>>>>> >>>>>>>>> 1. *Certificate Revocation List (CRL) :* a list of digital >>>>>>>>> certificates that have been revoked by the issuing CA >>>>>>>>> 2. *Online Certificate Status Protocol (OCSP) : *an Internet >>>>>>>>> protocol used for obtaining the revocation status of an X.509 >>>>>>>>> digital >>>>>>>>> certificate using the certificate serial number >>>>>>>>> >>>>>>>>> >>>>>>>>> Proposed implementation is to include certificate validation with >>>>>>>>> CRL and OCSP, in X509 authenticator which is for client X.509 >>>>>>>>> certificate >>>>>>>>> authentication. So that at the verification phase of SSL handshake, >>>>>>>>> OCSP/CRL certificate verification process, is used to contact the >>>>>>>>> relevant >>>>>>>>> Certificate Authority(CA) to verify the validity of the given >>>>>>>>> certificate. >>>>>>>>> If the response says that the certificate is revoked, it means that >>>>>>>>> the >>>>>>>>> certificate is no longer trusted by the CA, in which case the SSL >>>>>>>>> connection to the peer is terminated. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Please find the following architectural considerations for the >>>>>>>>> proposed implementation. >>>>>>>>> >>>>>>>>> *APIs or Services for CRL/OCSP Validation :* >>>>>>>>> Certificate Revocation Verification should be exposed as an OSGI >>>>>>>>> service in a matter where we can include validation methods >>>>>>>>> additionally >>>>>>>>> via extensions. >>>>>>>>> >>>>>>>> >>>>>>>> +1 There are two angels here, >>>>>>>> >>>>>>>> 1. This service should not be coupled with the X509 >>>>>>>> Authenticator, any other component that have the same requirement >>>>>>>> should be >>>>>>>> able to consume this service without an issue. >>>>>>>> 2. Ability to plug different implementations for validations. >>>>>>>> >>>>>>>> >>>>>>> Can't this be an extension to the tomcat transport & http client >>>>>>> implementation? Then it may cover all the TLS transports >>>>>>> >>>>>> >>>>> You are referring enabling OCSP/CRL validation in tomcat connector >>>>> level? If so, I think we need to do the validation through a valve, but >>>>> need to check whether a valve can be enabled tomcat connector wise. WDYT? >>>>> Since, we are exposing the OCSP/CRL validation in an OSGI service, it >>>>> can be engaged from any component. >>>>> >>>>> >>>>>> >>>>>> >>>>>>> https://issues.apache.org/jira/browse/HTTPCLIENT-483 >>>>>>> https://stackoverflow.com/questions/20286145/validate-client >>>>>>> -certificate-against-certificate-revocation-list-in-tomcat-7 >>>>>>> >>>>>>> Did we check the pass-through transport implementation of our ESB >>>>>>> regarding this ? >>>>>>> >>>>>> >>>>> Yes checked the pass-through transport implementation for this. >>>>> >>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> Asela. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>>> *Get CRL and OCSP URLs :* >>>>>>>>> >>>>>>>>> - When a CA signs a certificate, it will normally encode the >>>>>>>>> CRL and OCSP location/s into the certificate using "CRL >>>>>>>>> Distribution Point" >>>>>>>>> and "Authority Information Access" extensions respectively. >>>>>>>>> >>>>>>>>> >>>>>>>>> - If CRL and OCSP location/s are not specified in the >>>>>>>>> certificate or administrator wants to override that with a >>>>>>>>> predefined >>>>>>>>> locations in the server, we are planning to maintain a list of >>>>>>>>> trusted CAs >>>>>>>>> with CRL and OCSP location/s in registry. >>>>>>>>> >>>>>>>>> *Registry Structure* : Two registry resources as follows and >>>>>>>>> comma separated CRL/OCSP URls as property values mapping with the CA >>>>>>>>> issuer >>>>>>>>> name. >>>>>>>>> /_system/config/certificate/crl >>>>>>>>> /_system/config/certificate/ocsp >>>>>>>>> >>>>>>>>> *Trusted CA List *: Consider the issuers in the default >>>>>>>>> client-truststore of WSO2 products. >>>>>>>>> >>>>>>>>> *Caching Layer :* >>>>>>>>> >>>>>>>>> - Downloaded CRL from CRL URL or OCSP response from OCSP URL >>>>>>>>> will be cached. >>>>>>>>> >>>>>>>>> >>>>>>>>> - CA provides a CRL that is valid for a limited amount of time >>>>>>>>> and specifies the lifetime validity of the CRL in the "Next >>>>>>>>> Update" CRL >>>>>>>>> field. >>>>>>>>> >>>>>>>>> This field indicates the date by which the next CRL will be >>>>>>>>> issued. As mentioned in [1], the next CRL could be issued before the >>>>>>>>> indicated date, but it will not be issued any later than the indicated >>>>>>>>> date. >>>>>>>>> >>>>>>>> >>>>>>>>> So we should consider this property and validated the returned CRL >>>>>>>>> from cache, since a certificate in the CRL can be temporary >>>>>>>>> invalidated >>>>>>>>> (Hold) rather a irreversibly revoked certificate and use of an >>>>>>>>> outdated CRL >>>>>>>>> creates security exposures. >>>>>>>>> >>>>>>>> >>>>>>>> AFAIU, we could have ended up having invalid entries in cache, if >>>>>>>> we rely on 'Next Update' field. So how exactly are we going to cache >>>>>>>> CRL >>>>>>>> and OSCP? >>>>>>>> >>>>>>>>> >>>>>>>>> *Preference for CRL and OCSP :* >>>>>>>>> >>>>>>>>> - Able to disable one or both methods and to define preference >>>>>>>>> between CRL and OCSP - this will be through file based >>>>>>>>> configuration >>>>>>>>> - If both methods has enabled, verified with OCSP first, >>>>>>>>> followed by CRL >>>>>>>>> - By default (if not configured), verified with OCSP >>>>>>>>> >>>>>>>>> >>>>>>>> At least we should have extensible mechanism to override these to >>>>>>>> certificate level. ie. configuration levels would be, server -> tenant >>>>>>>> -> >>>>>>>> sp -> certificate. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>>> >>>>>>>>> - >>>>>>>>> >>>>>>>>> *Other Considerations :* >>>>>>>>> >>>>>>>>> - Validate CRL returned from the CRL URL >>>>>>>>> - CRL should signed by the issuer, so validate the issuer >>>>>>>>> domain name. >>>>>>>>> - Validate the signature of CRL with the issuer public >>>>>>>>> certificate. >>>>>>>>> - Validate the CRL "next update" date field for outdated >>>>>>>>> CRLs. >>>>>>>>> >>>>>>>>> >>>>>>>>> Appreciate your suggestions/comments. >>>>>>>>> >>>>>>>>> [1] https://tools.ietf.org/html/rfc5280 >>>>>>>>> [2] https://tools.ietf.org/html/rfc6960 >>>>>>>>> >>>>>>>>> Thanks and Regards >>>>>>>>> -- >>>>>>>>> Indunil Upeksha Rathnayake >>>>>>>>> Software Engineer | WSO2 Inc >>>>>>>>> Email indu...@wso2.com >>>>>>>>> Mobile 0772182255 <077%20218%202255> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Regards, >>>>>>>> >>>>>>>> >>>>>>>> *Darshana Gunawardana*Technical Lead >>>>>>>> WSO2 Inc.; http://wso2.com >>>>>>>> >>>>>>>> *E-mail: darsh...@wso2.com <darsh...@wso2.com>* >>>>>>>> *Mobile: +94718566859 <+94%2071%20856%206859>*Lean . Enterprise . >>>>>>>> Middleware >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Thanks & Regards, >>>>>>> Asela >>>>>>> >>>>>>> ATL >>>>>>> Mobile : +94 777 625 933 <+94%2077%20762%205933> >>>>>>> +358 449 228 979 >>>>>>> >>>>>>> http://soasecurity.org/ >>>>>>> http://xacmlinfo.org/ >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Indunil Upeksha Rathnayake >>>>>> Software Engineer | WSO2 Inc >>>>>> Email indu...@wso2.com >>>>>> Mobile 0772182255 <077%20218%202255> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Indunil Upeksha Rathnayake >>>>> Software Engineer | WSO2 Inc >>>>> Email indu...@wso2.com >>>>> Mobile 0772182255 <077%20218%202255> >>>>> >>>> >>>> >>>> >>>> -- >>>> Indunil Upeksha Rathnayake >>>> Software Engineer | WSO2 Inc >>>> Email indu...@wso2.com >>>> Mobile 0772182255 <077%20218%202255> >>>> >>> >>> >>> >>> -- >>> Indunil Upeksha Rathnayake >>> Software Engineer | WSO2 Inc >>> Email indu...@wso2.com >>> Mobile 0772182255 <077%20218%202255> >>> >>> >>> >> >> >> -- >> >> Thanks & Best Regards, >> >> Maheshika Goonetilleke >> Senior Engineering Process Coordinator >> >> *WSO2 Inc* >> *email : mahesh...@wso2.com <mahesh...@wso2.com>* >> *mobile : +94 773 596707 <+94%2077%20359%206707>* >> *www: :http://wso2.com <http://wso2.com/>*lean . enterprise . middleware >> >> >> >> >> > > > -- > Indunil Upeksha Rathnayake > Software Engineer | WSO2 Inc > Email indu...@wso2.com > Mobile 0772182255 > -- Thanks & Best Regards, Maheshika Goonetilleke Senior Engineering Process Coordinator *WSO2 Inc* *email : mahesh...@wso2.com <mahesh...@wso2.com>* *mobile : +94 773 596707* *www: :http://wso2.com <http://wso2.com/>*lean . enterprise . middleware
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture