Hello,
What do you think of this project www.openpbx.org ?
Something like ser and openser !
Kinds Regards
Harry
___________________________________________________________________________
Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger
Téléchargez cette version sur http://fr.messenger.yahoo.com
Hello,
/etc/hosts has the two IPs (the private and the public).
I m sure the phones in the private network can connect to the private IP
of SER and register them selfes.
And I m also sure that the phones with public IPs can connect to SERs
public IP and register.
But how can I check why isnt the RTP trafic passing?
I know the phones are registered, I can see the INVITEs with ngrep, but
I cant debug the passing of the RTP.
Thanks
Joao Pereira
www.fccn.pt
sip wrote:
>Have you checked the obvious things like telnetting from inside the network to
>the internal IP at port 5060 to make sure the connection is being made?
>
>Also... how's your /etc/hosts look? If you're using 2 IPs, SER may be trying
>to use essentially 2 different domains. If the internal IP isn't resolving as
>the same domain as the external (either through DNS (not recommended) or via
>/etc/hosts) then SER may be refusing to authenticate because the domains differ.
>
>Just some things to check if you haven't already.
>
>N.
>
>
>
>On Tue, 04 Oct 2005 18:48:20 +0100, Joao Pereira wrote
>
>
>>I dont know If the problem is realy of my ser.cfg, because the IP
>>phones with public IPs work, but the phones with private IPs just
>>ring... but I believe theres no RTP passing. Theres my SER:
>>
>>|--------------|
>>| |-------------- private IP
>>| S E R |
>>| |-------------- public IP
>>|--------------|
>>
>>Theres my ser.cfg:
>>
>>(...)
>>listen = 193.136.xxx.xxx
>>listen = 10.0.0.135
>>
>>(...)
>>
>>alias=fccn.pt
>>alias=193.136.xxx.xxx
>>alias=10.0.0.135
>>
>># memlog - Debugging level for final memory statistics report. Default
>># is L_DBG -- memory statistics are dumped only if debug is set high.
>>memlog=1
>>
>># ------------------ module loading ----------------------------------
>>
>>loadmodule "/usr/local/lib/ser/modules/postgres.so"
>>loadmodule "/usr/local/lib/ser/modules/sl.so"
>>loadmodule "/usr/local/lib/ser/modules/tm.so"
>>loadmodule "/usr/local/lib/ser/modules/rr.so"
>>loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
>>loadmodule "/usr/local/lib/ser/modules/usrloc.so"
>>loadmodule "/usr/local/lib/ser/modules/registrar.so"
>>
>>loadmodule "/usr/local/lib/ser/modules/textops.so"
>>
>>loadmodule "/usr/local/lib/ser/modules/acc.so"
>>
>># Uncomment this if you want digest authentication
>>loadmodule "/usr/local/lib/ser/modules/auth.so"
>>loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>>
>>loadmodule "/usr/local/lib/ser/modules/exec.so"
>>loadmodule "/usr/local/lib/ser/modules/group.so"
>>loadmodule "/usr/local/lib/ser/modules/print.so"
>>#loadmodule "/usr/local/lib/ser/modules/mediaproxy.so"
>>loadmodule "/usr/local/lib/ser/modules/uri.so"
>>loadmodule "/usr/local/lib/ser/modules/uri_db.so"
>>loadmodule "/usr/local/lib/ser/modules/domain.so"
>>loadmodule "/usr/local/lib/ser/modules/xlog.so"
>>loadmodule "/usr/local/lib/ser/modules/speeddial.so"
>>loadmodule "/usr/local/lib/ser/modules/options.so"
>>loadmodule "/usr/local/lib/ser/modules/avpops.so"
>>loadmodule "/usr/local/lib/ser/modules/permissions.so"
>>#loadmodule "/usr/local/lib/ser/modules/xdz_tools.so"
>>
>>loadmodule "/usr/local/lib/ser/modules/nathelper.so"
>>
>># ----------------- setting module-specific parameters ---------------
>>
>># -- nathelper params --
>>
>># proxy nat
>>modparam("nathelper", "natping_interval", 15)
>>modparam("nathelper", "ping_nated_only", 1)
>>
>>(...)
>>
>># ------------------------- request routing logic -------------------
>>
>># main routing logic
>>
>>route{
>>
>> if (!mf_process_maxfwd_header("10")) {
>> sl_send_reply("483","Too Many Hops");
>> break;
>> };
>>
>> if (msg:len > max_len ) {
>> sl_send_reply("513", "Message too big");
>> break;
>> };
>>
>> # --------------------------------------------------
>> # NOTIFY Keep-Alive Section
>> # --------------------------------------------------
>> if ((method=="NOTIFY") && search("^Event: keep-alive")) {
>> sl_send_reply("200", "OK");
>> break;
>> };
>>
>> if ((method=="NOTIFY") && (uri=~"^sip:700@")) {
>> sl_send_reply("200", "OK");
>> break;
>> };
>>
>> # --------------------------------------------------
>> # OPTIONS Section
>> # --------------------------------------------------
>> if (method=="OPTIONS") {
>> options_reply();
>> break;
>> };
>>
>> if (method=="REGISTER" && nat_uac_test("3")) {
>>
>> fix_nated_contact();
>> force_rport();
>> setflag(2);
>> };
>>
>> # --------------------------------------------------
>> # Registration Section
>> # --------------------------------------------------
>> (...)
>>
>> # --------------------------------------------------
>> # Accounting Section
>> # NOTE: We test for flag 14 because we do not want to record Click2Dial
>> # entries
>> # --------------------------------------------------
>>
>> if ((method=="INVITE" || method=="BYE" ||
>>method=="CANCEL"||method=="ACK" ||method=="REGISTER") &&
>>!isflagset(14)) { setflag(1); };
>>
>> # --------------------------------------------------
>> # NAT Tear-Down Section
>> # --------------------------------------------------
>>
>> if ((method == "BYE" || method == "CANCEL")) {
>> unforce_rtp_proxy();
>> };
>>
>> # --------------------------------------------------
>> # Record Route Section
>> # --------------------------------------------------
>> # we record-route all messages -- to make sure that subsequent messages
>> # will go through our proxy; that's particularly good if upstream and
>> # downstream entities use different transport protocol
>> if (!method=="REGISTER") {
>> record_route();
>> };
>>
>> # --------------------------------------------------
>> # Loose Route Section
>> #
>> # Grant route routing if route headers present
>> # --------------------------------------------------
>> if (loose_route()) {
>> route(2);
>> break;
>> };
>>
>> #
>>
>> # --------------------------------------------------
>> # NAT Test Section #1
>> # --------------------------------------------------
>>
>> if (nat_uac_test("3") && !search("^Record-Route:")) {
>> force_rport();
>>
>> fix_nated_contact();
>> };
>>
>>(...)
>>
>> # --------------------------------------------------
>> # Alias Routing Section
>> # --------------------------------------------------
>>
>> lookup("aliases");
>> if (!uri==myself) {
>> route(2);
>> break;
>> };
>>
>>(...)
>>
>> # --------------------------------------------------
>> # Anonymous Call Rejection Section
>> # --------------------------------------------------
>> if (isflagset(24) && (method=="INVITE") &&
>>search("^(f|F)rom:.*(a|A)nonymous")) {
>> route(8);
>> break;
>> };
>>
>> # --------------------------------------------------
>> # URI Compare Section
>> # --------------------------------------------------
>> # Here we compare the "from" and "to" to see if the caller is dialing
>> # their own extension. If so then we route to voicemail if needed
>> if (method=="INVITE") {
>> avp_write("$from", "i:34");
>> if (avp_check("i:34", "eq/$ruri/i")) {
>> if (isflagset(31)) {
>> route(5);
>> break;
>> } else {
>> sl_send_reply("486", "Busy");
>> break;
>> };
>> };
>> };
>>
>>(...)
>>
>> # --------------------------------------------------
>> # Do Not Disturb Section
>> # --------------------------------------------------
>> if (avp_db_load("$ruri/username", "s:donotdisturb")) {
>> if (avp_check("s:donotdisturb", "eq/y/i")) {
>> route(5);
>> break;
>> };
>> };
>>
>> # --------------------------------------------------
>> # Call Routing Section
>> # --------------------------------------------------
>>
>> if (!lookup("location")){
>>
>> # if flag 31 (ie voicemail) is set and we made it here this means
>> # the user's phone is not registered anywhere. We'll forward to
>> # voicemail after this block because we need to check the call
>> # forward settings first
>> if (isflagset(31)) {
>>
>> # flag 19 means the user has voicemail but is not online
>> # so we need to remember to send to voicemail if call
>> # forwarding is not enabled
>> setflag(19);
>> };
>>
>> if (method=="INVITE") {
>>
>> if( !uri=~"@fccn.pt" ) {
>> if (!method=="REGISTER") record_route();
>> t_relay();
>> break;
>> }
>>
>> if (does_uri_exist()) {
>> # o utilizador foi encontrado mas esta offline
>> sl_send_reply("480", "Temporarily Unavailable");
>> break;
>> };
>>
>> sl_send_reply("404", "Utilizador nao Encontrado");
>> break;
>> };
>> };
>>
>> # --------------------------------------------------
>> # Call Forwarding Section
>> # --------------------------------------------------
>>
>> if (method=="INVITE") {
>>
>> # only load the forward no answer option if voice mail is not enabled
>> if (!isflagset(31)) {
>> if (avp_db_load("$ruri/username", "s:fwdnoanswer")) {
>> route(1);
>>
>> if (!avp_check("$calltype", "eq/-/i")) {
>> if (avp_check("$calltype", "eq/dom/i")) {
>> avp_write("dom", "$fwd_no_answer_type");
>> } else if (avp_check("$calltype", "eq/int/i")) {
>> avp_write("int", "$fwd_no_answer_type");
>> } else {
>> avp_write("sip", "$fwd_no_answer_type");
>> }
>>
>> setflag(27);
>> };
>> };
>> };
>>
>> if (avp_db_load("$ruri/username", "s:fwdbusy")) {
>> route(1);
>>
>> if (!avp_check("$calltype", "eq/-/i")) {
>>
>> if (avp_check("$calltype", "eq/dom/i")) {
>> avp_write("dom", "$fwd_busy_type");
>> } else if (avp_check("$calltype", "eq/int/i")) {
>> avp_write("int", "$fwd_busy_type");
>> } else {
>> avp_write("sip", "$fwd_busy_type");
>> }
>>
>> setflag(26);
>> };
>> };
>>
>> avp_pushto("$ruri", "i:99");
>> };
>>
>> if (isflagset(19)) {
>> # send to voicemail
>> route(5);
>> } else {
>> route(2);
>> };
>>
>>} #route
>>
>>route[1] {
>>
>> avp_write("-", "$calltype");
>>
>> if (uri=~"^sip:1[0-9]{10}@") {
>> strip(1);
>> };
>>
>> lookup("aliases");
>> if (!lookup("location")) {
>> if (uri=~"^sip:[0-9]{10}@") {
>>
>> # test for domestic PSTN number
>> if (isflagset(28)) {
>> avp_write("dom", "$calltype");
>> };
>>
>> } else if (uri=~"^sip:011[0-9]*@") {
>>
>> # test for international PSTN number
>> if (isflagset(29)) {
>> avp_write("int", "$calltype");
>> };
>> };
>>
>> break;
>> };
>>
>> avp_write("sip", "$calltype");
>>
>>}
>>
>>route[2] {
>>
>># check for RFC1918 ip addresses
>> # -- NATHELPER --
>> if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
>>!search("^Route:")){
>> sl_send_reply("479", "We don't forward to private IP addresses");
>> break;
>> };
>>
>> #check if the NAT Flag is set
>> if (isflagset(6)) {
>> log(1, "LOG: flag 6 set => One of the sides is NATed ->
>>force_rtp_proxy()\n");
>> if(!force_rtp_proxy()) {
>> log(1, "LOG: force_rtp_prpoxy FAILED!\n");
>> } else {
>> log(1, "LOG: force_rtp_proxy() succeeded!\n");
>> };
>> };
>>
>> if (isflagset(25)) {
>> replace("^From:(.*)>" , "From: \"Anonymous\" <sip:someone at
>>anonymous.invalid>");
>> };
>>
>>if (method=="INVITE" || method=="ACK") {
>> force_rtp_proxy();
>> };
>>
>> t_on_failure("1");
>> t_on_reply("1");
>>
>> if (!t_relay()) {
>>
>> if (method=="INVITE" || method=="ACK") {
>> unforce_rtp_proxy();
>> };
>>
>> sl_reply_error();
>> };
>>}
>>
>># encaminhamento para o Gateway PSTN
>>route[3] {
>>
>> if (method=="INVITE") {
>>
>> if (!proxy_authorize("fccn.pt", "utilizador")) {
>>
>> proxy_challenge("fccn.pt", "0");
>> break;
>> }
>> } else if (!check_from()) {
>>
>> log(1, "Spoofed SIP call attempt");
>> sl_send_reply("403", "Use From=ID");
>> break;
>>
>> } else if (!(is_from_local() || is_uri_host_local())) {
>>
>> sl_send_reply("403", "Please register to use our service");
>> break;
>> };
>>
>> # enable caller id blocking for PSTN calls
>> if (isflagset(25)) {
>> append_rpid_hf();
>> };
>> };
>>
>> # SIP->PSTN calls get 45 seconds to timeout
>> avp_write("i:45", "inv_timeout");
>>
>>rewritehostport("10.0.0.135:1720");
>>
>> if (method=="INVITE" || method=="ACK") {
>> force_rtp_proxy();
>> };
>>
>> if (isflagset(31)) {
>> t_on_failure("1");
>> };
>>
>> t_on_reply("1");
>>
>> if (!t_relay()) {
>>
>> if (method=="INVITE" || method=="ACK") {
>> unforce_rtp_proxy();
>> };
>>
>> sl_reply_error();
>> };
>>}
>>
>>(...)
>>
>>onreply_route[1] {
>>
>> # Not all 2xx messages have a content body so here we
>> # make sure our Content-Length > 0 to avoid a parse error
>> if (status=~"(180)|(183)|2[0-9][0-9]") {
>>
>> if (!search("^Content-Length:\ 0")) {
>> force_rtp_proxy();
>> };
>> };
>>
>> if (nat_uac_test("1")) {
>> fix_nated_contact();
>> };
>>}
>>
>>failure_route[1] {
>>
>> if (t_check_status("487")) {
>> break;
>> };
>>
>> if (isflagset(26) && t_check_status("486")) {
>>
>> # forward busy is flag 26
>> if (avp_pushto("$ruri", "s:fwdbusy")) {
>> avp_delete("s:fwdbusy");
>> append_branch();
>> resetflag(26);
>> # test for domestic PSTN gateway
>> if (avp_check("$fwd_busy_type", "eq/dom/i")) {
>> # test for domestic PSTN gateway
>> route(3);
>># sl_send_reply("503", "Gateway PSTN Indisponivel-3");
>> #} else if (avp_check("$fwd_busy_type", "eq/int/i")) {
>> # test for international PSTN gateway
>> # route(6);
>># } else {
>> # default to sip call
>> route(2);
>> };
>>
>> break;
>> };
>> };
>>
>> # here we can have either voicemail __OR__ forward no answer
>> if (isflagset(27) && t_check_status("408")) {
>>
>> # forward no answer is flag 27
>>
>> if (avp_pushto("$ruri", "s:fwdnoanswer")) {
>> avp_delete("s:fwdnoanswer");
>> append_branch();
>> resetflag(27);
>>
>> if (avp_check("$fwd_no_answer_type", "eq/dom/i")) {
>> # test for domestic PSTN gateway
>> route(3);
>> #sl_send_reply("503", "Gateway PSTN Indisponivel");
>> #} else if (avp_check("$fwd_no_answer_type", "eq/int/i")) {
>> # test for international PSTN gateway
>> # route(6);
>> #} else {
>> # default to sip call
>> route(2);
>> };
>>
>> break;
>> };
>>
>> } else if (isflagset(31) && avp_pushto("$ruri", "$voicemail")) {
>>
>> avp_delete("$voicemail");
>> route(4);
>> break;
>> };
>>}
>>
>>onreply_route[2] {
>>
>> log(1, "LOG: entered onreply_route[2] now... \n");
>>
>> if(isflagset(6)) { # && status =~"(183)|2[0-9][0-9]") {
>> log(1, "LOG: TRansaction was sent to a NATed client -->
>>fix_nated_contact() and force_rtp_proxy().\n");
>> if(!fix_nated_contact()) {
>> log(1, "LOG: fix_nated_contact() FAILED!\n");
>> } else {
>> log(1, "LOG: fix_nated_contact() succeded.\n");
>> };
>>
>> if(!force_rtp_proxy()) {
>> log(1, "LOG: force_rtp_proxy() FAILED!\n");
>> } else {
>> log(1, "LOG: force_rtp_proxy() succeded.\n");
>> };
>>
>> append_hf("P-hint: fixed NAT contact for response\r\n");
>>
>> } else if (nat_uac_test("1")) {
>> log(1, "LOG: Uncaught NAT. => fix_nated_contact()\n");
>> if(!fix_nated_contact()) {
>> log(1, "LOG: fix_nated_contact() FAILED!\n");
>> } else {
>> log(1, "LOG: fix_nated_contact() succeded.\n");
>> };
>> };
>>
>>}
>>
>>Sorry the long post.
>>Joao Pereira
>>www.fccn.pt
>>
>>Paul Hazlett wrote:
>>
>>
>>
>>>Joao,
>>>
>>>The problem is probably and error in your ser.cfg file. I'd recommend
>>>you download a copy of the Getting Started document from www.onsip.org
>>>and look at the section on RTPproxy.
>>>
>>>Regards,
>>>Paul
>>>
>>>On 10/4/05, Joao Pereira <joao.pereira(a)fccn.pt> wrote:
>>>
>>>
>>>
>>>
>>>>Hello to all,
>>>>Is there any way of making debug in RTP proxy?
>>>>My SER has one public IP and one private IP. The public phones can speak
>>>>each other, but the private IP phones can t speak each other (they just
>>>>ring, but theres no voice ) , and apears this error on SER:
>>>>ERROR: send_rtpp_command: can't read reply from a RTP proxy
>>>>
>>>>How can I debug RTPproxy?
>>>>Thanks
>>>>
>>>>Joao Pereira
>>>>www.fccn.pt
>>>>
>>>>
>>>>
>>>>_______________________________________________
>>>>Serusers mailing list
>>>>serusers(a)lists.iptel.org
>>>>http://lists.iptel.org/mailman/listinfo/serusers
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>_______________________________________________
>>Serusers mailing list
>>serusers(a)lists.iptel.org
>>http://lists.iptel.org/mailman/listinfo/serusers
>>
>>
>
>
>
>
Hi,
please (CC) your mails to the mailing list in order to others can see
the replies.
No, I mean SerWeb log. You must enable it in config file.
$config->enable_loging = true;
Which version of serweb are you useing?
Karel
Voipers Portugal napsal(a):
> Well, i did what you told me, and now when i press Login, i get a
> blank page with nothing on in. And if i press refresh, i get the login
> page again.
>
> When you asked for the log, is the ser log, right? Well, nothing
> happened there when i try to access the login page. Any idea?
>
> Jose Simoes
>
>
>
> 2005/10/5, Karel Kozlik <karel(a)iptel.org>:
>
>>Hi,
>>which version of serweb are you useing? If some old, check your php.ini
>>for register_globals = on.
>>
>>If you have serweb 0.9.x, you are first who reporting this behaviour.
>>Please enable logging, set log level to debug and send me the logfile.
>>
>>regards Karel
>>
>>Voipers Portugal napsal(a):
>>
>>>Hi,
>>>
>>>When i am trying to access serweb in http://host/ser/admin/index.php i
>>>get the space to authenticate myself.. but independently from what i
>>>type in username and password, when i press login nothing happens. any
>>>idea?
>>>
>>>Thanks in advance,
>>>
>>>Jose Simoes
>>>
>>>_______________________________________________
>>>Serusers mailing list
>>>serusers(a)lists.iptel.org
>>>http://lists.iptel.org/mailman/listinfo/serusers
>>
Hi,
I'm about to hack up the textops module a bit, and wondered if
anyone else has run into this.
I'd like to create a line like:
P-Asserted-ID: 14085551212(a)mydomain.com
and insert this into the sip packet.
I'd use append_hf(), except the number listed above is contained in
the From: URI.
I was going to hack a append_urihf() into a append_furihf() to accomplish
the task...can I do this with an exec_dset or something else?
-g
--
Greg Fausak
greg(a)thursday.com
Hello,
Somebody can help me in a doubt that I have with relation to the use of the SER with Windows Messenger?
Is it necessary to include something in the code it ser.cfg, as some new configuration so that it has accepted register,
required instant messages and presence through the Windows Messenger?
If exists any configuration, somebody could please, send the archive ser.cfg with them?
Thanks in advance,
Ana.
Hi,
I am using ser 0.9.3 and postgresql with db mode 2.
There is a very serious problem when SER is binding users. Each SER PID
takes around 11% to 13% of CPU, which add up to be 99.x%
And at that time, no one can REGISTER, no one can INVITE etc.
Anyone experience that before?
Regards,
Chia
Do look at the example in onsip.org
They have a sample config file for call forwarding.
Sam
________________________________
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org] On
Behalf Of sagar
Sent: Thursday, October 06, 2005 12:10 AM
To: serusers(a)lists.iptel.org
Subject: [Serusers] forwarding a call to a phone number using SER
Hi All,
I want to impliment the call forwarding in my SER.
Can anybody please send me a working ser.cfg which forwards a call to
any particular
phone number.
I am very hopefull from your side.
THANKS IN ADVANCE .
SAGAR.
vids_cs(a)yahoo.com
<http://us.f518.mail.yahoo.com/ym/Compose?To=vids_cs@yahoo.com>
vids.cs(a)gmail.com
<http://us.f518.mail.yahoo.com/ym/Compose?To=vids.cs@gmail.com>
________________________________
Yahoo! for Good
Click here to donate <http://store.yahoo.com/redcross-donate3/> to the
Hurricane Katrina relief effort.
Do look at the example in onsip.org
They have a sample config file for call forwarding.
Sam
________________________________
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org] On
Behalf Of sagar
Sent: Thursday, October 06, 2005 12:10 AM
To: serusers(a)lists.iptel.org
Subject: [Serusers] forwarding a call to a phone number using SER
Hi All,
I want to impliment the call forwarding in my SER.
Can anybody please send me a working ser.cfg which forwards a call to
any particular
phone number.
I am very hopefull from your side.
THANKS IN ADVANCE .
SAGAR.
vids_cs(a)yahoo.com
<http://us.f518.mail.yahoo.com/ym/Compose?To=vids_cs@yahoo.com>
vids.cs(a)gmail.com
<http://us.f518.mail.yahoo.com/ym/Compose?To=vids.cs@gmail.com>
________________________________
Yahoo! for Good
Click here to donate <http://store.yahoo.com/redcross-donate3/> to the
Hurricane Katrina relief effort.
Hi everybody,
I want to test openser 0.10.x and its TLS capabilities. Therefore I plan
to install two proxies, sip.atlanta.com and sip.biloxi.com. Two users,
alice(a)atlanta.com and sip.biloxi.com, should communicate over the two
proxies secured by TLS. The UAs are snom360 phones.
------------------- -----------------
----------------- -----------------
| alice(a)atlanta.com | <-------> | sip.atlanta.com | <-------> |
sip.biloxi.com | <-------> | bob(a)biloxi.com |
------------------- -----------------
----------------- -----------------
Mutual authentication should take place between the UAC and the outbound
proxy, the two proxies and between the inbound proxy and the UAS.
The problem is that I am not sure about the organisation of the
certificate's infrastructure. I don't know which would be the best
solution to implement.
So please look at my suggestions and feel free to you make your comments.
1.. user certificate for alice(a)atlanta.com
2.. server certificate for sip.atlanta.com
3.. server certificate for sip.biloxi.com
4.. user certificate for bob.biloxi.com
The root certificate is self signed (Does this work with openser?)
a.) One common CA (=root) signs all components.
-----------
| CA |
-----------
/ / \ \
/ / \ \
/ | | \
--- --- --- ---
|1| |2| |3| |4|
--- --- --- ---
b.) Tow separate CAs (= each one's root) sign their proxy and UA. Mutual import of the other domains root certificate takes place.
----- -----
|CA A | |CA B |
----- -----
/ \ / \
--- --- --- ---
|1| |2| |3| |4|
--- --- --- ---
c.) One common root signs two CAs which sign their proxy and UA.
-----------
| root-cert |
-----------
/ \
/ \
----- -----
|CA A | |CA B |
----- -----
/ \ / \
--- --- --- ---
|1| |2| |3| |4|
--- --- --- ---
Thank you very much for your help!
regards,
Philipp