Помогите пожайлуста с установкой OpenCA-0.9.1 под FreeBSD 4.6-RELEASE
OpenSSL 0.9.7
Apache/2.0.42
perl 5.6.1
Я закоментировал строку X509_STORE_set_flags(cert_store, vflags);
в файле /dist/CA/OpenCA-0.9.1/src/openca-sv/src/verify.c
хочу посмотреть что получиться дальше
#./make ca-install
installing common components because it is not a package build
make docs src SUBTARGET=install-common
cd docs && make install-common
cd src && make install-common
make common SUBTARGET=install
cd common && make install
make etc lib var SUBTARGET=install
cd etc && make install
/usr/local/OpenCA/etc already exists, skipping configuration
cd lib && make install
make: don’t know how to make /usr/local/OpenCA/lib/cmds. Stop
*** Error code 2
Stop in /root/dist/CA/OpenCA-0.9.1/src/common.
*** Error code 1
Stop in /root/dist/CA/OpenCA-0.9.1/src/common.
*** Error code 1
Stop in /root/dist/CA/OpenCA-0.9.1/src.
*** Error code 1
Stop in /root/dist/CA/OpenCA-0.9.1/src.
*** Error code 1
Stop in /root/dist/CA/OpenCA-0.9.1.
*** Error code 1
Stop in /root/dist/CA/OpenCA-0.9.1.
*** Error code 1
Stop in /root/dist/CA/OpenCA-0.9.1.
This should be invoked on the ROOT CA.
It creates a directory with the crl, certs, newcerts and private folder.
It also initializes the index.db which stores information about the issued certs by the CA.
# Create the ROOT directory
# generate the private key
# write the private key in the private key folder
# create the self signed certificate of the CA as it is ROOT
# write the certificate in the certs folder
# create the serial file
# create the crl file
# create the index DB
# other commands should be run from the same directory in future
creates a CSR.
CN should be given. If no CN is given CN is generated as
Password should be given in bytes. Default is b»DEFAULT»
# create a certificate signing request for ROOT CA
# cerate the CSR
# write the private key in the private key folder
# write the csr in the csr folder
# create the serial file
# create the crl file
# create the index DB
ca_type can be ‘root’ or ‘intermediate’
if ca_type is root then the ca directory will contain a self signed certificate
if ca_type is intermediate then ca directory will contain a csr that can be signed by root using signReqCA function
creates a CA with the given name and password is set for the private key of CA.
subject_dict should have these values-
C — Country
ST — State or Province
L — Locality
O — Organization
OU — Organizational Unit
CN — Common Name
Common Names should never be same of any certificate under a CA.
‘Password should be at least 4 character long’
Открытый исходный код
OpenCA, официально OpenCA PKI Research Labs и ранее OpenCA Project — это PKI совместная работа по разработке надежного, полнофункционального открытого исходного кода готового центра сертификации внедрение наиболее часто используемых протоколов с полной криптографией. OpenCA основан на многих проектах с открытым исходным кодом; Среди них проекты OpenLDAP, OpenSSL и Apache.
Разработка проекта разделена на 2 основные задачи: изучение и уточнение схемы безопасности, которая гарантирует лучшую модель для использования в центре сертификации, и разработка программного обеспечения для простой настройки центра сертификации и управления им.
Разработка программного обеспечения в рамках проекта далее делится на следующие подпроекты:
- OpenCA PKI, полнофункциональный пакет PKI.
- LibPKI, библиотека для разработки приложений PKI.
- OpenCA OCSPD, небольшой, надежный демон Online Certificate Status Protocol.
- PRQPD Server, демон PKI Resource Query Protocol для использования вместе с Пакет PKI.
- OpenCA-ng, проект следующего поколения, запланированный для реализации новых функций и преодоления ограничений текущего проекта.
from OpenCA import createCA, signReqCA, createCSR
createCA('root','ROOT','root-pass',{'CN':'FQDN_ROOT'})
createCA('int','INTERMEDIATE','inter-pass',{'CN':'FQDN_INETRMEDIATE'})
signReqCA('ROOT','INTERMEDIATE','root-pass','ca')
createCSR('USER','user-pass',{'CN':'FQDN_USER'})
createCSR('SERVER','server-pass',{'CN':'FQDN_SERVER'})
signReqCA('INTERMEDIATE','USER.csr.pem','inter-pass','usr')
signReqCA('INTERMEDIATE','SERVER.csr.pem','inter-pass','svr')
from OpenCA import Utils
Utils.verify_chain('ROOT/certs/ROOT.cert.pem',open('INTERMEDIATE/certs/INTERMEDIATE.cert.pem','rb').read()) # True
Utils.verify_chain('ROOT/certs/ROOT.cert.pem',open('USER.cert.pem','rb').read()) # False
Utils.verify_chain('ROOT/certs/ROOT.cert.pem',open('SERVER.cert.pem','rb').read()) # False
Utils.verify_chain('INTERMEDIATE/certs/INTERMEDIATE.cert.pem',open('USER.cert.pem','rb').read()) # False
Utils.verify_chain('INTERMEDIATE/certs/INTERMEDIATE.cert.pem',open('SERVER.cert.pem','rb').read()) # False
# End Certificates can only be verified using the chain of trust
Utils.verify_chain('INTERMEDIATE/certs/ROOT.INTERMEDIATE.chain.pem',open('USER.cert.pem','rb').read()) # True
Utils.verify_chain('INTERMEDIATE/certs/ROOT.INTERMEDIATE.chain.pem',open('SERVER.cert.pem','rb').read()) # True
from OpenCA import createCA
createCA('root','ROOT_NAME','ROOT_PASS', {'CN':'FQDN.Goes.Here'})
from OpenCA import createCA, signReqCA
createCA('int', 'INTERMEDIATE_NAME', 'INT_PASS', {'CN':'FQDN.Should.Not.Be.Same.As.Of.Root.CA'})
signReqCA('PATH_TO_ROOT_CA_FOLDER','PATH_TO_INTERMEDIATE_CA_FOLDER','ROOT_PASS', csr_type = 'ca' )
signReqCA saves the certificate of Intermediate CA in ROOT CA’s newcerts directory and enrolls it in index.db.
return value of signReqCA is the certificate bytes of Intermediate CA’s generated certificate.
Users/server generates a PKey and CSR and hands it over to Intermediate CA.
from OpenCA import createCSR
createCSR('User','User_password',{'CN':'USER_FQDN'})
It will create two files in the current directory -
1.User.private.pem
2.User.csr.pem
create End user certificate on Intermediate CA-
from OpenCA import signReqCA
signReqCA('PATH_TO_INTERMEDIATE_CA_FOLDER','PATH_TO_CSR_OF_USER_OR_SERVER','INT_PASS', csr_type = <'usr' or 'svr'> )
from OpenCA import createCA, signReqCA, createCSR
createCA('root','ROOT','root-pass',{'CN':'FQDN_ROOT'})
createCA('int','INTERMEDIATE','inter-pass',{'CN':'FQDN_INETRMEDIATE'})
signReqCA('ROOT','INTERMEDIATE','root-pass','ca')
createCSR('USER','user-pass',{'CN':'FQDN_USER'})
createCSR('SERVER','server-pass',{'CN':'FQDN_SERVER'})
signReqCA('INTERMEDIATE','USER.csr.pem','inter-pass','usr')
signReqCA('INTERMEDIATE','SERVER.csr.pem','inter-pass','svr')
from OpenCA import Utils
Utils.verify_chain('ROOT/certs/ROOT.cert.pem',open('INTERMEDIATE/certs/INTERMEDIATE.cert.pem','rb').read()) # True
Utils.verify_chain('ROOT/certs/ROOT.cert.pem',open('USER.cert.pem','rb').read()) # False
Utils.verify_chain('ROOT/certs/ROOT.cert.pem',open('SERVER.cert.pem','rb').read()) # False
Utils.verify_chain('INTERMEDIATE/certs/INTERMEDIATE.cert.pem',open('USER.cert.pem','rb').read()) # False
Utils.verify_chain('INTERMEDIATE/certs/INTERMEDIATE.cert.pem',open('SERVER.cert.pem','rb').read()) # False
# End Certificates can only be verified using the chain of trust
Utils.verify_chain('INTERMEDIATE/certs/ROOT.INTERMEDIATE.chain.pem',open('USER.cert.pem','rb').read()) # True
Utils.verify_chain('INTERMEDIATE/certs/ROOT.INTERMEDIATE.chain.pem',open('SERVER.cert.pem','rb').read()) # True
from OpenCA import createCA
createCA('root','ROOT_NAME','ROOT_PASS', {'CN':'FQDN.Goes.Here'})
from OpenCA import createCA, signReqCA
createCA('int', 'INTERMEDIATE_NAME', 'INT_PASS', {'CN':'FQDN.Should.Not.Be.Same.As.Of.Root.CA'})
signReqCA('PATH_TO_ROOT_CA_FOLDER','PATH_TO_INTERMEDIATE_CA_FOLDER','ROOT_PASS', csr_type = 'ca' )
signReqCA saves the certificate of Intermediate CA in ROOT CA’s newcerts directory and enrolls it in index.db.
return value of signReqCA is the certificate bytes of Intermediate CA’s generated certificate.
Users/server generates a PKey and CSR and hands it over to Intermediate CA.
from OpenCA import createCSR
createCSR('User','User_password',{'CN':'USER_FQDN'})
It will create two files in the current directory -
1.User.private.pem
2.User.csr.pem
create End user certificate on Intermediate CA-
from OpenCA import signReqCA
signReqCA('PATH_TO_INTERMEDIATE_CA_FOLDER','PATH_TO_CSR_OF_USER_OR_SERVER','INT_PASS', csr_type = <'usr' or 'svr'> )
OpenCA PKI
Проблема с инфраструктурами открытых ключей (PKI) заключается в том, что большинство приложений можно защитить с помощью сертификатов и ключей, но это сложно а иногда и дорого устанавливать PKI, потому что гибкое программное обеспечение центра доверия стоит дорого.
OpenCA появился в 1999 году. Первая идея состояла из трех основных частей — веб-интерфейса Perl, бэкэнда OpenSSL для криптографических операций и базы данных. Эта простая концепция до сих пор остается девизом разработчиков. Практически все операции можно выполнять через веб-интерфейс. Он имеет шесть предварительно сконфигурированных интерфейсов, и в зависимости от потребности из них можно создать гораздо больше. Криптографический бэкэнд — OpenSSL, что никоим образом не является недостатком. OpenCA нацелена на создание организационной инфраструктуры для PKI. В базах данных OpenCA хранится вся необходимая информация о криптографических объектах пользователей, таких как запросы на подпись сертификатов (CSR), сертификаты, запросы на отзыв сертификата (CRR) и списки отзыва сертификатов (CRL).
Возможности OpenCA PKI
Сегодня OpenCa поддерживает следующие элементы: (это неполный список, чтобы вы могли понять, насколько сложна тема):
OpenCA разработан для распределенной инфраструктуры. Он может не только обрабатывать автономный CA и онлайн-RA, но с его помощью вы можете построить целую иерархию с тремя или более уровнями. OpenCA — это не просто небольшое решение для малых и средних исследовательских центров. Цель состоит в том, чтобы обеспечить максимальную гибкость для крупных организаций, таких как университеты, сети и глобальные компании.
Внешние ссылки
- OpenCA
- Инструкции по установке CentOS 5/6 OpenCA