hi Azeez

Please confirm.

On Mon, Feb 12, 2018 at 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
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> 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
>>>>
>>>
>>>
>>>
>>> --
>>> Indunil Upeksha Rathnayake
>>> Software Engineer | WSO2 Inc
>>> Email    indu...@wso2.com
>>> Mobile   0772182255
>>>
>>
>>
>>
>> --
>> Indunil Upeksha Rathnayake
>> Software Engineer | WSO2 Inc
>> Email    indu...@wso2.com
>> Mobile   0772182255
>>
>
>
>
> --
> 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

Reply via email to