Раз PKI и Java, то изучите предметную область по этой теме (когда начнёте отличать сертификат от закрытого ключа и от подписи - уже прониклись темой, начало положено), также BouncyCastle изучите и OpenSSL.
Не повредит заглянуть внутрь ASN.1, посмотреть что внутри CMS-контейнера, OCSP-запроса и ответа, подписи, штампа времени, ...
www.codeproject.com/Articles/4910/ASN-Editor - нормальный продукт, но не дружит с кириллицей и юникодом.
lapo.it/asn1js - инструмент получше, как научить его видеть недостающие OID-ы легко разберётесь.
Поработайте с конкретными реализациями инструментов, что сертифицированы в нашей стране. Разверните/перенастройте/удалите УЦ от КриптоПро раз пять. И вы будете по опыту в PKI на пол головы выше остальных. Сделайте тоже самое на базе Microsoft Server, поймёте в чем отличия. Попробуйте сделать так, чтобы оболочка была от Microsoft Server, а криптопровайдер от КриптоПро, или ЛИССИ, или VipNET.
Очень интересная тема - работа клиентской части инфраструктуры PKI на Android, спрос есть.
Считаю, что чтобы начать грамотно разбираться в PKI для Linux и Android надо сначала заложить основы, работая под Windows.