Saturday, June 25, 2016

Cobertura de código: Grado de código fuente que ha sido probado

Emplear frameworks y herramientas que calculen y aseguren la efectivad de software facilita el trabajo del ciclo de desarrollo y la entrega del mismo a producción. Hace unos años tuve la oportunidad de conocer a un lider técnico que empleaba las pruebas unitarias como metodo para liberar las actividades y tareas del día de un programador, el me dijo que no permitia que sus programadores salieran a las 6:00pm si no demostraban una ejecución de pruebas unitarias de los componentes o servicios que habian desarrollado en el día (ni por ende se permitia su versionamiento), al principio puede ser desmotivante para el programador y un poco desgastante ya que si se calcula su día en 8-9 horas puede tardar una cierta parte de su tiempo en crear clases que demuestren el funcionamiento sin dejar a cargo la calidad de código, probablemente para programadores experimentados las pruebas unitarias se han intrinsecas al desarrollo de cualquier funcion en el sistema, a mi parecer cada vez que se produce y se te asigna una actividad esta debe ser medible y por lo tanto cuantificada para ser parte de un proceso y por lo tanto poder decir que empleas una metodologia de trabajo y formas parte de un equipo, por ello si se le indica al programador que las pruebas unitarias es una forma de indicar un buen desempeño en su actividad esto puede dar por hecho a la larga que la mejora continua puede darse en cualquier sistema.

La covertura de codigo es un pieza en plataformas de gestión de calidad, para asegurar que haces bien las cosas deben ser revisadas o comparadas contra un estándar, hay herramientas como Sonarqube o el propio VIsual Studio pueden ejecutar este reportes, bien para realizar "cobertura" empleando SonarQube es requerido la siguiente configuración:

1. Agregar las siguientes propiedades al archivo pom:

2. Agregar el plugin de JaCoCo para enviar el reporte a sonar dentro del pom:

3. Ejecutar con maven las siguientes lineas:

$ mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar

4. El resultado muesta una metrica de cobertura que puede ser estudia y revisada:


Si bien sonar puede ser un dolor de cabeza para algunas programadores, despues de uso comienzas a ver su utilidad y efectividad por el valor de que mejora tus habilidades en desarrollo, si bien su ejecución a mi parecer debe ser diaria o periodicamente semanal (esto se puede hacer facilmente con una tarea programada dentro de Jenkins).

Best regards,

Cobertura de código: Grado de código fuente que ha sido probado

Emplear frameworks y herramientas que calculen y aseguren la efectivad de software facilita el trabajo del ciclo de desarrollo y la entrega del mismo a producción. Hace unos años tuve la oportunidad de conocer a un lider técnico que empleaba las pruebas unitarias como metodo para liberar las actividades y tareas del día de un programador, el me dijo que no permitia que sus programadores salieran a las 6:00pm si no demostraban una ejecución de pruebas unitarias de los componentes o servicios que habian desarrollado en el día (ni por ende se permitia su versionamiento), al principio puede ser desmotivante para el programador y un poco desgastante ya que si se calcula su día en 8-9 horas puede tardar una cierta parte de su tiempo en crear clases que demuestren el funcionamiento sin dejar a cargo la calidad de código, probablemente para programadores experimentados las pruebas unitarias se han intrinsecas al desarrollo de cualquier funcion en el sistema, a mi parecer cada vez que se produce y se te asigna una actividad esta debe ser medible y por lo tanto cuantificada para ser parte de un proceso y por lo tanto poder decir que empleas una metodologia de trabajo y formas parte de un equipo, por ello si se le indica al programador que las pruebas unitarias es una forma de indicar un buen desempeño en su actividad esto puede dar por hecho a la larga que la mejora continua puede darse en cualquier sistema.

La covertura de codigo es un pieza en plataformas de gestión de calidad, para asegurar que haces bien las cosas deben ser revisadas o comparadas contra un estándar, hay herramientas como Sonarqube o el propio VIsual Studio pueden ejecutar este reportes, bien para realizar "cobertura" empleando SonarQube es requerido la siguiente configuración:

1. Agregar las siguientes propiedades al archivo pom:

2. Agregar el plugin de JaCoCo para enviar el reporte a sonar dentro del pom:

3. Ejecutar con maven las siguientes lineas:

$ mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar

4. El resultado muesta una metrica de cobertura que puede ser estudia y revisada:


Si bien sonar puede ser un dolor de cabeza para algunas programadores, despues de uso comienzas a ver su utilidad y efectividad por el valor de que mejora tus habilidades en desarrollo, si bien su ejecución a mi parecer debe ser diaria o periodicamente semanal (esto se puede hacer facilmente con una tarea programada dentro de Jenkins).

Best regards,

Cobertura de código: Grado de código fuente que ha sido probado

Emplear frameworks y herramientas que calculen y aseguren la efectivad de software facilita el trabajo del ciclo de desarrollo y la entrega del mismo a producción. Hace unos años tuve la oportunidad de conocer a un lider técnico que empleaba las pruebas unitarias como metodo para liberar las actividades y tareas del día de un programador, el me dijo que no permitia que sus programadores salieran a las 6:00pm si no demostraban una ejecución de pruebas unitarias de los componentes o servicios que habian desarrollado en el día (ni por ende se permitia su versionamiento), al principio puede ser desmotivante para el programador y un poco desgastante ya que si se calcula su día en 8-9 horas puede tardar una cierta parte de su tiempo en crear clases que demuestren el funcionamiento sin dejar a cargo la calidad de código, probablemente para programadores experimentados las pruebas unitarias se han intrinsecas al desarrollo de cualquier funcion en el sistema, a mi parecer cada vez que se produce y se te asigna una actividad esta debe ser medible y por lo tanto cuantificada para ser parte de un proceso y por lo tanto poder decir que empleas una metodologia de trabajo y formas parte de un equipo, por ello si se le indica al programador que las pruebas unitarias es una forma de indicar un buen desempeño en su actividad esto puede dar por hecho a la larga que la mejora continua puede darse en cualquier sistema.

La covertura de codigo es un pieza en plataformas de gestión de calidad, para asegurar que haces bien las cosas deben ser revisadas o comparadas contra un estándar, hay herramientas como Sonarqube o el propio VIsual Studio pueden ejecutar este reportes, bien para realizar "cobertura" empleando SonarQube es requerido la siguiente configuración:

1. Agregar las siguientes propiedades al archivo pom:

2. Agregar el plugin de JaCoCo para enviar el reporte a sonar dentro del pom:

3. Ejecutar con maven las siguientes lineas:

$ mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar

4. El resultado muesta una metrica de cobertura que puede ser estudia y revisada:


Si bien sonar puede ser un dolor de cabeza para algunas programadores, despues de uso comienzas a ver su utilidad y efectividad por el valor de que mejora tus habilidades en desarrollo, si bien su ejecución a mi parecer debe ser diaria o periodicamente semanal (esto se puede hacer facilmente con una tarea programada dentro de Jenkins).

Best regards,

Cobertura de código: Grado de código fuente que ha sido probado

Emplear frameworks y herramientas que calculen y aseguren la efectivad de software facilita el trabajo del ciclo de desarrollo y la entrega del mismo a producción. Hace unos años tuve la oportunidad de conocer a un lider técnico que empleaba las pruebas unitarias como metodo para liberar las actividades y tareas del día de un programador, el me dijo que no permitia que sus programadores salieran a las 6:00pm si no demostraban una ejecución de pruebas unitarias de los componentes o servicios que habian desarrollado en el día (ni por ende se permitia su versionamiento), al principio puede ser desmotivante para el programador y un poco desgastante ya que si se calcula su día en 8-9 horas puede tardar una cierta parte de su tiempo en crear clases que demuestren el funcionamiento sin dejar a cargo la calidad de código, probablemente para programadores experimentados las pruebas unitarias se han intrinsecas al desarrollo de cualquier funcion en el sistema, a mi parecer cada vez que se produce y se te asigna una actividad esta debe ser medible y por lo tanto cuantificada para ser parte de un proceso y por lo tanto poder decir que empleas una metodologia de trabajo y formas parte de un equipo, por ello si se le indica al programador que las pruebas unitarias es una forma de indicar un buen desempeño en su actividad esto puede dar por hecho a la larga que la mejora continua puede darse en cualquier sistema.

La covertura de codigo es un pieza en plataformas de gestión de calidad, para asegurar que haces bien las cosas deben ser revisadas o comparadas contra un estándar, hay herramientas como Sonarqube o el propio VIsual Studio pueden ejecutar este reportes, bien para realizar "cobertura" empleando SonarQube es requerido la siguiente configuración:

1. Agregar las siguientes propiedades al archivo pom:

2. Agregar el plugin de JaCoCo para enviar el reporte a sonar dentro del pom:

3. Ejecutar con maven las siguientes lineas:

$ mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar

4. El resultado muesta una metrica de cobertura que puede ser estudia y revisada:


Si bien sonar puede ser un dolor de cabeza para algunas programadores, despues de uso comienzas a ver su utilidad y efectividad por el valor de que mejora tus habilidades en desarrollo, si bien su ejecución a mi parecer debe ser diaria o periodicamente semanal (esto se puede hacer facilmente con una tarea programada dentro de Jenkins).

Best regards,

Sunday, June 19, 2016

How to querying Alfresco for development purpose?

Working around with Alfresco document management systems, it comes with an architecture to handle and dealing with files likely, in terms on building your interfaces that request/response the petition of document to be indexing, profiling, storing and managing following CMIS specification, the best way of doing an implementation of an interface if your using Web Service is handle the archive as attachments or MTOM in the best way previously passing the file thought discovering, encoding, binarization and packing for sending a file to well decoupled layer of services that handle asynchronously the reception of document and retrieving a correct response to a client who is waiting with a timeout in queue/streaming manner the processing of his document.

Alfresco uses open source in backstage (Apache Chemistry) which intermediately use a language to communicate repository with internal database is like JPQL or LINQ, is just simple like using hibernate HQL and you must develop an integration to dealing the document structure and normalization of their characterization with your systems, so to dealing with connection you could query Alfresco with: Chemestry OpenCMIS Workbench to start the tool you must execute:

$ workbench.sh

and you will get like this in Java Application:
Commons problems in development are that tables with column ObjectId respond lower in amount of time of 20 seconds after 2 million of records saved in the documents, this sound like a tunning database problem, solving will require some investing hours, after taking care of network problems handling with High Availability in your infrastructure and asynchronously retrieve a response of events and states with steps of document process.


Best Regards,

Saturday, June 18, 2016

How to configure a porlet inside your application to be installed on Liferay Portal?

I remembered that few years I told a manager to review Liferay Portal before doing an home development, my experience with portals give to suggest that it was going to fix to his solution, after working with Liferay may I say you have to be care and have well-configured, federated, not superpass and overloading the actual functions of the Portal Layer, for example federation is interesting topic where portal layer should be a pass-out and measure how the Authentication, authorization, and accounting (AAA) is doing and where an application should intervene (recovered cookies, tokens or sessions), Liferay as well as an application should live together with other applications in a container installed on a Application Server, you should probably think twice how all applications federated could be live together in a cluster with a server(s) running with Liferay.

Liferay Portal has cool things that you probably you must not codify, configure or manage, for example considerations of being responsive to the client rendering content to the most common devices in the other hand a TUNNING is a priority in development state, the first thing is install the database in DMBS outside of memory fabric configuration (review index, table, partitions, users, columns), clustering is not of free version so you probably develop Security Agents to handle objects of authorization and accounting, review log files to view how you should perform jvm parameters (parallel is recommend) and spread functionality across the server

To configurate a portlet you should the following next steps:

1. Required artifact in your pom file:

2. Configuration in web.xml (tld should be download from liferay distribution)
3. Create portlet file:


There is another consideration to be careful that is well programmed applications using portlets for example, timeout in any request/response in the front-end and in the back-end take care of the cost and duration of transactions for not converting your Application Server in a rock (it happens and is terrible).

So after choosing your portal there is a benefit of using a technology and decisions of taking a path and this is the knowledge and ideas you probably you have experienced, if you are doing a home development is well suited decision to start for your infrastructure or having license for Portals like IBM where front-end should be carried in using and extends provider libraries, or built something from open-source resources which are paths that be well done when there is team up, management with vision and well suited timetables.  

Best regards,



Tuesday, June 14, 2016

How to connect OpenAM and Spring Security to do Single Sign On (SSO)?

There is a list of previous steps for doing SSO between a Web app and OpenAm and the most important things are:
  1.  Start OpenAM and well configurated server.
  2.  Create users and specificate the rol names.
  3.  Install agentapp inside webserver
  4.  Execute agentadmin to create a policy between webapp and openam.
All those steps require some time, in the application context we need to do some configuration in context for conclude AAA, Authentication is taking for OpenAM, Authorization is given by Spring Security and OpenAM interconnection and Accounting is doing for WebApp when it asign the corresponding roles and access to the client (by now we are going to do some federation), so here the short list of configuration for doing with Spring security:

1. First required artifact in the app:

2. Start spring context with spring security:

3. The most import part filters and connection to retry OpenAM config:

4. Create the shared cookie:

5. The amconfig properties to taking url, user and password

For the application is kind of simple for just federate permissions between components.

Important link:

Saturday, June 11, 2016

How to solve 'ISAM error: the file is locked' on Informix after using jdbc?

I have a Teacher/Sensei who teach me a lot the theory and principles of database engine really works his name is ++++++ a consultant and expert on Oracle, we worked together some months ago, my experience at that time was with Oracle Database 11g and Oracle Enterprise Manager, using some past knowledge I have to encourage a relative problem with Informix called "Dirty Reads" he explained to me that is a bad practice of consulting, updating or inserting data.

Informix is more sensible and treats data carefully based on ISAM which are algorithms in database in response a petition of users, so database principles are the same in other database engine, but on the other hand, at Oracle the engine resolves this problem internally and produce a problem or cost when it represents a problem causing interruptions in database, one of those is the best post I have introduced:

http://codefixes.blogspot.mx/2016/05/possible-solution-for-isam-error-key.html

When your process is concurrent and you have multiple users in the background pieces of data have to move on in the engine, if you do not measure and take the cost of queries that you are sending to database eventually you degrade the performance of your application, a problem could be at the next one:

 ISAM error: the file is locked (http://www.oninit.com/errorcode/index.php?pageid=-113)

For solving this kind of problems are two paths, one is correct the application (the better one) or give more time of waiting for the database (mitigating), so please check your query if you are doing an update of a bunch of elements you should go through the primary key o indexed fields, or in it is the case in a select check your where statement and modified to go to indexing field:

update table set column = :column1 where idprimarykey in (:idprimarykey);
select column1, column2, column3 from table where  idprimarykey in (:idprimarykey);

The other method is gained more time in transaction is not an effective way but informix provided:
...
> echo "set isolation to dirty read; select count(*) from customer;" | dbaccess stores_demo
... 
> echo "set lock mode to wait; select count(*) from customer;" | dbaccess stores_demo
...
http://www-01.ibm.com/support/docview.wss?uid=swg21508233

Dirty data are not welcomed to the database and you must carry the access to objects where are you doing transactions and service who are using it. 

Another important configuration when are using Informix is take care of Transaction Isolation and propagations after reading the documentation, Informix does not support readonly=true, and propagation must be in Serializable for betters ways, something like this if you are using spring framework:

@Transactional(value = "XXXXTransaccionManager", readOnly = false, propagation = Propagation.REQUIRED, timeout = 6000,isolation = Isolation.READ_COMMITTED)

And take care of using a version superior of 3 in the driver because it have some problems in the writing.


Best Regards, 

Important links:

How to web service client built in Perl for testing purpose?

Sometimes we are in a server terminal and we need to test webservice behavior, so based in what we have running scripts in perl. 

Option 1: One file of test


1. The client program: 


2. Execution line: 

$ perl soap_action_ws_test.pl > soap_action_ws_test.log

Option 2: With external file:

1. Request XML


2. The client program:


3. Execution line: 

$ perl soap_action_ws_test_2.pl > soap_action_ws_test_2.log

Option 3: Load external file by command line

1. The client program:


 
2. Execution line: 

$ perl soap_action_ws_test.pl  /home/user/code/perl/consultarSalariesPorRangoRequest.xml > soap_action_ws_test.log

Important sources:
Tested on:

  • Centos
  • HP-UX
  • Ubuntu 
Best regards, 

Monday, June 6, 2016

How to create a Spring datasource to connect Informix Database?

First off it is need some libraries in pom.xml

After jars import we require to create the service to pool datasource:

Best regards,

How to solve '"NoSuchBeanDefinitionException: No bean named' ... 'importRegistry'" is defined' exception?

Testing some Spring Framework I have to run some code that returns with the following exception on a combination of camel, spring jms, jax-ws and spring boot:

The solution after some some review of logs and forums I discovered that class of JAX-WS was not properly named by stub source, the class was named as OperationRuleServiceService this class have @WebServiceClient, I discovered spring have some problem with that name, so I decided to rename the class with OperationRuleClient and afterwards I have a good compilation.

Best regards,

Sunday, June 5, 2016

How to create a IBM MQ Client Library using SSL for transmision? (PART II-II)


1. Emitir un certificado para una aplicación cliente en C
Cada aplicación debe tener su propio certificado con un nombre distinguido. Cada nombre distinguido debe ser único en la red del Websphere MQ.

1.1. Crear la llave del repositorio para la aplicación
Cambiar el directorio donde se encuentra localizado la llave del repositorio donde será creado /application:
user@user-vbox:~/code/ssl$ mkdir applicationuser@user-vbox:~/code/ssl$ cd application/user@user-vbox:~/code/ssl/application$  
Y emitir el siguiente comando para crear la llave de la base de datos de la aplicación:
user@user-vbox:~/code/ssl/application$ /opt/mqm/bin/runmqckm -keydb -create -db myapp.kdb -type cms -stash
A password is required to access the source key database.
Please enter a password:
1.2. Crear el certificado de solicitud
Introduce el siguiente comando:
user@user-vbox:~/code/ssl/application$ /opt/mqm/bin/runmqckm -certreq -create -db myapp.kdb -type cms -dn "CN=myAppName,O=sysEnterprise,OU=sysDeparment,L=Mexico,C=MX" -label "ibmwebspheremquser" -file myapp.req
A password is required to access the source key database.
Please enter a password:
1.3. Transferir la solicitud
Transferir el archivo de solicitud del certificado myapp.req para el directorio dodne se encuentra localizado los archivos CA.
user@user-vbox:~/code/ssl/application$ cp myapp.req /home/user/code/ssl/appCAdir/
1.4. Firmar la aplicación con el certificado
Ejecutar siguiente comando:
user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/runmqckm -cert -sign -db appCA.kdb -label "appCAcertificate" -expire 365 -format ascii -file myapp.req -target myapp.cer
1.5 Transferir el certificado firmado
Transferir el certificado firmado, myapp.cer y el certificado publico de CA de regreso /application
user@user-vbox:~/code/ssl/appCAdir$ cp myapp.cer /home/user/code/ssl/application/user@user-vbox:~/code/ssl/appCAdir$ cp appCAcertfile.cer /home/user/code/ssl/application/
1.6. Agregar el certificado CA
Agregar el certificado a un repositorio llave de la aplicación:
user@user-vbox:~/code/ssl/application$ /opt/mqm/bin/runmqckm -cert -add -db myapp.kdb -type cms -file appCAcertfile.cer -label "theCAcert"
A password is required to access the source key database.
Please enter a password:

1.7. Recibir el certificado firmado
user@user-vbox:~/code/ssl/application$ /opt/mqm/bin/runmqckm -cert -receive -db myapp.kdb -type cms -file myapp.cer
A password is required to access the source key database.
Please enter a password:
1.8. Ejecutar una aplicación ejemplo

1.8.1. Crear el canal SVRCONN que use SSL
Iniciar el gestor de colas si no esta ya ejecutándose:

user@user-vbox:~/code/ssl/application$ strmqm appqmgr01

Una definición apropiada del canal SVRCONN debe de crearse. Esto se puede lograr en cualquier directorio: 

user@user-vbox:~/code/ssl/application$ /opt/mqm/bin/runmqsc appqmgr01
DEFINE CHANNEL(MY.SEC.SVRCONN.CHL) CHLTYPE(SVRCONN) TRPTYPE(TCP) SSLCAUTH(REQUIRED) SSLCIPH(RC4_MD5_US)
END

1.8.2. Iniciar el listener
Si el listener no esta activo en el gestor de colas:

user@user-vbox:~/code/ssl/application$ /opt/mqm/bin/runmqsc appqmgr01

DEFINE CHANNEL(MY.SEC.SVRCONN.CHL) CHLTYPE(SVRCONN) TRPTYPE(TCP) SSLCAUTH(REQUIRED) SSLCIPH(RC4_MD5_US)
END

1.8.2. Agregar variable de entorno
user@user-vbox:~/code/ssl/application$ MQSSLKEYR=/home/user/code/ssl/applicationuser@user-vbox:~/code/ssl/application$ export MQSSLKEYRuser@user-vbox:~/code/ssl/application$ echo $MQSSLKEYR
/home/user/code/ssl/application
user@user-vbox:~/code/ssl/application$

1.8.3. Codigo de programa en C para enviar un mensaje
   
1.8.3. Compilación del programa en GCC
gcc -m64 -o PutSample PutSample.c -I/opt/mqm/inc -L/opt/mqm/lib64 -Wl,-rpath=/opt/mqm/lib64 -Wl,-rpath=/usr/lib64 -lmqic

(EN REVISION)

Otros enlaces:
Best regards,


How to create a IBM MQ Client Library using SSL for transmision? (PART I-II)

1. Ambiente de desarrollo 
  • Ubuntu 16.04 
  • IBM Message Queue 7.5 
2. Aplicación empleando SSL, creación de una Autoridad de Certificación. 
2.1. Crear una llave para el repositorio CA 
Crear un directorio, y dentro del directorio crear el archivo con la llave del repositorio:
user@user-vbox:~/code/ssl$ mkdir appCAdir
user@user-vbox:~/code/ssl$ cd appCAdir/
user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/runmqckm -keydb -create -db appCA.kdb -type cms


Ingresando los comandos se solicitara crear una contraseña y deberá ingresar para usar la llave CA del repositorio.

2.2. Crear un certificado personal CA certificado

user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/runmqckm -cert -create -db appCA.kdb -type cms -label "appCAcertificate" -dn "CN=appSysCAName,O=sysEnterprise,OU=sysDeparment,L=Mexico,C=MX" -expire 1000 -size 1024

-expires: define la cantidad de dias de expiracion del certificado

2.3 Extraer el certificado CA

Extraer el certificado CA en un archivo llamado appCAcertfile.cer, el cual transferiremos después a los repositorios del gestor de colas y cliente de la aplicación.

user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/runmqckm -cert -extract -db appCA.kdb -type cms -label "appCAcertificate" -target appCAcertfile.cer -format ascii

2.4 Emisor de un certificado para un gestor de colas

Cada gestor de colas en la infraestructura debe tener su propio certificado, con su propio nombre distinguido (DN), El DN debe ser único con la red del Websphere MQ.

user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/crtmqm appqmgr01
There are 89 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager created.
Directory '/var/mqm/qmgrs/appqmgr01' created.
The queue manager is associated with installation 'Installation1'.
Creating or replacing default objects for queue manager 'appqmgr01'.
Default objects statistics : 74 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/strmqm appqmgr01
There are 89 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager 'appqmgr01' starting.
The queue manager is associated with installation 'Installation1'.
5 log records accessed on queue manager 'appqmgr01' during the log replay phase.
Log replay for queue manager 'appqmgr01' complete.
Transaction manager state recovered for queue manager 'appqmgr01'.
WebSphere MQ queue manager 'appqmgr01' started using V7.5.0.2.

2.4.2 Crear la llave del repositorio para el gestor de colas

Cambiar la localización del directorio donde el archivo con la llave del repositorio es creado: /repository

user@user-vbox:~/code/ssl$ mkdir repositoryuser@user-vbox:~/code/ssl$ cd repository/

Y es seguido del siguiente comando para crear con la llave de la base de datos para el gestor colas:

user@user-vbox:~/code/ssl/repository$ /opt/mqm/bin/runmqckm -keydb -create -db appqmgr.kdb -type cms -stash

Después de ingresar el comando se solicitara ingresar la contraseña.

2.4.3 Crear el certificado de respuesta para solicitud

Generar el certificado de solicitud para el gestor de colas, a partir de llave privada.

user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/runmqckm -certreq -create -db appqmgr.kdb -type cms -dn "CN=appqmgr01,O=sysEnterprise,OU=sysDeparment,L=Mexico,C=MX" -label "ibmwebspheremqappqmgr" -file appqmgr.req
  
Después de ingresar el comando se solicitara ingresar la contraseña.

2.4.4 Transferir la solicitud

Para transferir el archivo de solicitud del certificado appqmgr.req, APRA el directorio donde el archivo CA se encuentra localizado. Es necesario cambiar al directorio:


user@user-vbox:~/code/ssl/repository$ ls
appqmgr.kdb  appqmgr.rdb  appqmgr.req  appqmgr.sth
user@user-vbox:~/code/ssl/repository$ pwd
/home/user/code/ssl/repository
user@user-vbox:~/code/ssl/repository$ mv appqmgr.req /home/user/code/ssl/appCAdir/

2.4.5 Firmar el certificado del gestor colas

Ejecutando el siguiente comando:

user@user-vbox:~/code/ssl/appCAdir$ /opt/mqm/bin/runmqckm -cert -sign -db appCA.kdb -label "appCAcertificate" -expire 365 -format ascii -file appqmgr.req -target appqmgr.cer

2.4.6 Transferir el certificado firmado CA

Transferir el certificado firmado appqmgr.cer y el certifcado public appCAcertfile.cer, a /repository.

user@user-vbox:~/code/ssl/appCAdir$ mv appqmgr.cer /home/user/code/ssl/repository/
user@user-vbox:~/code/ssl/appCAdir$ cp appCAcertfile.cer /home/user/code/ssl/repository/
2.4.7 Agregar el certificado CA

Agregar el certificado publico de CA al repositoriod e llaves del gestor de colas:

user@user-vbox:~/code/ssl/repository$ /opt/mqm/bin/runmqckm  -cert -add -db appqmgr.kdb -type cms -file appCAcertfile.cer -label "theCAcert"  
 


2.4.8 Repositorio del certificado firmado

Recibir el certificado en la llave del repositorio del gestor de colas.


 user @user-vbox:~/code/ssl/repository$ /opt/mqm/bin/runmqckm -cert -receive -db appqmgr.kdb -type cms -file appqmgr.cer

2.5 Agregar la locación de la llave del queuemanager
user@user-vbox:~/code/ssl/repository$ /opt/mqm/bin/runmqsc appqmgr01
5724-H72 (C) Copyright IBM Corp. 1994, 2011.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager appqmgr01.

ALTER QMGR SSLKEYR('/home/user/code/ssl/repository/appqmgr')
     1 : ALTER QMGR SSLKEYR('/home/
user/code/ssl/repository/appqmgr')
AMQ8005: WebSphere MQ queue manager changed.
END
     2 : END
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.



Aqui termina la parte uno de 2 articulos de creación de certificados en IBM MQ.

Best regards,